一尘不染

在Java中查询trim()方法

java

我早些时候问了一个问题,但遭到了严厉的批评,因此在这里我再次提出。比较简单,改写为吸引那些可能一直担心我之前提出的问题的人。

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

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

结果是:

'Sophomore                                          '
'Sophomore                                          '

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

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

结果是:

'  hello     '
'hello'

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

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


阅读 292

收藏
2020-12-03

共1个答案

一尘不染

String.trim()
特别是仅删除代码超出第一个字符之前的字符\u0020,以及最后一个此类字符之后的字符。

这不足以删除 所有 可能的空格字符-Unicode定义了多个其他字符(具有上面的代码点\u0020),这些字符不会被匹配.trim()

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

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

str = str.replace('\u00a0', ' ');
2020-12-03