为了在 Java 中删除字符串中的空格,我的代码必须是什么样的?
我尝试了以下方法:
/* Option 1 */ String x=splitString.replaceAll("\\s+","");
/* Option 2 */ String x=splitString.trim()
这些都没有给我我期望的结果。
认为\s
匹配所有空格的一小群人是完全错误的!查看文档,我们可以看到它匹配[ \t\n\x0B\f\r]
- 一堆中断的空白(或者换句话说,只是普通的旧普通空白。)
同样,trim()
也不匹配所有空格(更糟糕的是,它匹配所有值 <= 空格的字符,其中大部分在技术上不是空格) - 所以给出一个字符串前后有空格的例子,然后调用trim()
就它而言,不是任何想象力的全面测试。
鉴于上述情况,您提供的(基于正则表达式的)代码肯定会从字符串中删除所有中断的空格,所以在我看来,您在那里有一个潜在的非中断空白字符。如果您从某个外部源提取了任何文本,而不仅仅是在代码中编写字符串(例如,HTML 页面的一部分可能是最有可能的候选者),则尤其可能出现这种情况。
如果是这种情况,请尝试:
String x=splitString.replaceAll("\\p{Z}","");
...where\p{Z}
是匹配任何类型空格的快捷方式,而不仅仅是非中断空格。\p{Separator}
是它的更长(等效)形式。
试试这个代码会帮助你!
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.