如何从Java中的字符串中删除前导和尾随空格?

我想从字符串中删除前导和尾随空格:

String s = " Hello World "; 

我希望结果如下:

 s == "Hello world"; 

  s.trim() 

看String#trim()

没有任何内部方法,请使用正则表达式

  s.replaceAll("^\\s+", "").replaceAll("\\s+$", "") 

要么

  s.replaceAll("^\\s+|\\s+$", "") 

或者只是以纯粹的forms使用模式

  String s=" Hello World "; Pattern trimmer = Pattern.compile("^\\s+|\\s+$"); Matcher m = trimmer.matcher(s); StringBuffer out = new StringBuffer(); while(m.find()) m.appendReplacement(out, ""); m.appendTail(out); System.out.println(out+"!"); 

使用String类trim方法。 它将删除所有前导和尾随空格。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html

我不喜欢使用正则表达式来处理琐碎的问题。 这将是一个简单的选择:

 public static String trim(final String s) { final StringBuilder sb = new StringBuilder(s); while (sb.length() > 0 && Character.isWhitespace(sb.charAt(0))) sb.deleteCharAt(0); // delete from the beginning while (sb.length() > 0 && Character.isWhitespace(sb.charAt(sb.length() - 1))) sb.deleteCharAt(sb.length() - 1); // delete from the end return sb.toString(); } 
 String s="Test "; s= s.trim(); 
 s = s.trim(); 

更多信息: http : //docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

为什么不想使用预定义的方法? 它们通常效率最高。

请参见String#trim()方法

 String s=" Hello World "; s = s.trim(); 

有关更多信息, 请参阅此

虽然@ xehpuk的方法很好,如果你想避免使用正则表达式,但它有O(n ^ 2)时间复杂度。 以下解决方案也避免了正则表达式,但是是O(n):

 if(s.length() == 0) return ""; char left = s.charAt(0); char right = s.charAt(s.length() - 1); int leftWhitespace = 0; int rightWhitespace = 0; boolean leftBeforeRight = leftWhitespace < s.length() - 1 - rightWhitespace; while ((left == ' ' || right == ' ') && leftBeforeRight) { if(left == ' ') { leftWhitespace++; left = s.charAt(leftWhitespace); } if(right == ' ') { rightWhitespace++; right = s.charAt(s.length() - 1 - rightWhitespace); } leftBeforeRight = leftWhitespace < s.length() - 1 - rightWhitespace; } String result = s.substring(leftWhitespace, s.length() - rightWhitespace); return result.equals(" ") ? "" : result; 

这计算字符串开头和结尾的尾随空格的数量,直到从空白计数获得的“左”和“右”索引满足,或者两个索引都达到非空白字符。 之后,我们要么返回使用空白计数获得的子字符串,要么返回空字符串,如果结果是空格(需要考虑具有奇数个字符的所有空白字符串)。