为了在java中删除String中的空格,我的代码必须是什么样的?

Pan*_*pul 0 java regex string

为了在Java中删除String中的空格,我的代码必须是什么样的?

我尝试过以下方法:

/* Option 1 */ String x=splitString.replaceAll("\\s+","");
/* Option 2 */ String x=splitString.trim()
Run Code Online (Sandbox Code Playgroud)

这些都没有给我我期望的结果.

Mic*_*rry 24

认为\s所有空白相匹配的小军队是完全错误的!查看文档,我们可以看到它匹配[ \t\n\x0B\f\r]- 一堆破碎的空格(换句话说,只是普通的旧普通空格.)

同样,trim()也不匹配所有空格(更糟糕的是,它匹配所有具有值<=空格的字符,其中大部分不是技术上的空格) - 所以在字符串前后给出一个带空格的例子,然后调用trim()在它上面,不是任何想象力的综合测试.

鉴于上述情况,您提供的(基于正则表达式)代码肯定会从字符串中删除所有破坏的空格,因此听起来像是在那里有一个可能不会破坏的空白字符.如果您从某个外部源提取任何文本而不是仅仅在代码中写入字符串(例如,HTML页面的一部分可能是最可能的候选者),则尤其可能出现这种情况.

如果是这种情况,请尝试:

String x=splitString.replaceAll("\\p{Z}","");
Run Code Online (Sandbox Code Playgroud)

... \p{Z}匹配任何类型的空格的快捷方式,而不仅仅是非破坏空格.\p{Separator}是它的更长(等效)形式.

  • +1 note:trim()删除尾随/前导字符<=空格.这包括许多非空格字符,并且错过了许多更高的空白字符. (2认同)