查询Java中的trim()方法

时间:2012-09-09 23:15:14

标签: java string parsing trim

我之前问了一个问题,但遇到了严厉的批评,所以我再次提出这个问题。更简单,并改为吸引那些可能一直关注我之前问过的人。

背景 我正在解析一些HTML信息。我已经在一系列线条中隔离了所有内容,但我希望抓住它的内容以及它之后的一堆空格。为了摆脱空间,我选择使用trim(),但我一直遇到麻烦。我的代码的最后几行是测试:

System.out.println("'" + someString + "'\n'" + someString.trim() + "'");

结果是:

'Sophomore                                          '
'Sophomore                                          '

我担心我调用trim()的方式可能有问题,因为我们都会不时出错,所以我测试了这样:

String s = "   hello         ";
System.out.println("'" + s+ "'\n'" + s.trim() + "'");

结果是:

'  hello     '
'hello'

我的问题 我究竟做错了什么?我想要的是获得“二年级学生”,而不是“二年级学生”

我期待您的出色答案(提前感谢!)。

2 个答案:

答案 0 :(得分:3)

代码超过String.trim()的第一个字符之前的

\u0020 specifically only removes个字符,以及最后一个字符之后的字符。

这不足以删除所有可能的空格字符 - Unicode定义了多个(\u0020以上的代码点).trim()无法匹配。

也许你的白色空间字符不是你认为的那些?

EDIT 评论显示,额外的字符确实是“特殊的”空白字符,特别是\u00a0,这是一个Unicode“非破坏空间”。要替换普通空格,请使用:

str = str.replace('\u00a0', ' ');

答案 1 :(得分:1)

源字符串中必须有非空白字符。 将以下内容添加到您的代码中,看看它打印的内容。

for (char ch : someString.toCharArray()) {
     System.out.print(Integer.toHexString(ch) + " ");
}