-1

我之前问了一个问题,但遭到了严厉的批评,所以我在这里再次提出。更简单,并且改写以吸引那些可能一直担心我之前提出问题的人。

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

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

结果是:

'Sophomore                                          '
'Sophomore                                          '

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

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

结果是:

'  hello     '
'hello'

我的问题我做错了什么?我想要的是获得“大二”,而不是“大二”

我期待您的出色回答(提前致谢!)。

4

2 回答 2

3

String.trim() 具体来说,只删除代码超过的第一个字符之前的字符\u0020,以及最后一个这样的字符之后的字符。

这不足以删除所有可能的空白字符 - Unicode 定义了更多(上面有代码点\u0020)不会被.trim().

也许您的空白字符不是您认为的那些?

编辑评论显示,额外的字符确实是“特殊”空白字符,特别\u00a0是 Unicode“不间断空格”。要用普通空格替换那些,请使用:

str = str.replace('\u00a0', ' ');
于 2012-09-09T23:27:23.707 回答
1

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

for (char ch : someString.toCharArray()) {
     System.out.print(Integer.toHexString(ch) + " ");
}
于 2012-09-09T23:35:10.783 回答