0

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

我尝试了以下方法:

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

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

4

2 回答 2

25

认为\s匹配所有空格的一小群人是完全错误的!查看文档,我们可以看到它匹配[ \t\n\x0B\f\r]- 一堆中断的空白(或者换句话说,只是普通的旧普通空白。)

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

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

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

String x=splitString.replaceAll("\\p{Z}","");

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

于 2013-10-01T11:34:16.657 回答
0

试试这个代码会帮助你!

String st = " Hello I am White Space   ";
System.out.println(st);  // Print Original String
   //st = st.replaceAll("\\s+",""); // Remove all white space and assign to same
   st = st.trim(); // It is working fine.
System.out.println(st);  // Print after removing all white space.
于 2013-10-01T11:33:16.013 回答