无法删除java中字符串中的多个空格

时间:2015-07-31 08:42:08

标签: java regex

问题: 在eclipse编辑器中工作时,无法删除字符串中的多个空格

上下文:

String myString1 ="aye  bye  tye  ";
String myString2 =myString1.replaceAll("\\s+","");
System.out.println("replaced string ="+myString2);

在输出中,不删除空格,结果与字符串相同,

replaced string =aye  bye  tye

正在打印

但如果单词之间只有一个空格,

String myString1 ="aye bye tye";

结果正确如下:

replaced string =ayebyetye

我想知道我哪里出错了?

3 个答案:

答案 0 :(得分:3)

我只能猜测空格不是真正的空格字符(U + 0020),而是一些Unicode空格字符,比如U + 00A0 NO BREAK SPACE。默认情况下,\s仅匹配ASCII范围内的空格字符,因此不会将其删除。

如果要删除所有Unicode空格,则必须使用内联构造(?U)启用UNICODE_CHARACTER_CLASS标志

String myString2 = myString1.replaceAll("(?U)\\s+", "");

答案 1 :(得分:1)

在替换零件中使用空格,以便用一个空格字符替换一个或多个空格。

String myString2 = myString1.replaceAll("\\s+", " ");

String myString2 = myString1.replaceAll("(\\s)+", "$1");

答案 2 :(得分:0)

为什么

String myString2 =myString1.replaceAll(" ","");

不是一种选择吗?你根本不需要正则表达式