我早些时候问了一个问题,但遭到了严厉的批评,因此在这里我再次提出。比较简单,改写为吸引那些可能一直担心我之前提出的问题的人。
背景信息我正在解析一些HTML信息。我将所有内容隔离在一系列的行中,但我希望抓取的内容以及其后的空格。为了摆脱空间,我选择使用trim(),但是遇到了麻烦。我的代码的最后几行是测试:
System.out.println("'" + someString + "'\n'" + someString.trim() + "'");
结果是:
'Sophomore ' 'Sophomore '
我担心我调用trim()的方式可能有问题,因为我们都会不时出错,所以我像这样测试了它:
String s = " hello "; System.out.println("'" + s+ "'\n'" + s.trim() + "'");
' hello ' 'hello'
我的问题我在做什么错?我想要得到的是“大二”,而不是“大二”
我期待着您的出色回答(提前感谢!)。
String.trim() 特别是仅删除代码超出第一个字符之前的字符\u0020,以及最后一个此类字符之后的字符。
String.trim()
\u0020
这不足以删除 所有 可能的空格字符-Unicode定义了多个其他字符(具有上面的代码点\u0020),这些字符不会被匹配.trim()。
.trim()
也许您的空白字符不是您认为的空白字符?
编辑 评论显示,多余的字符确实是“特殊的”空白字符,特别\u00a0是Unicode的“不间断空格”。要将其替换为普通空格,请使用:
\u00a0
str = str.replace('\u00a0', ' ');