用Java中的正则表达式替换字符串中的空格

用Java中的正则表达式替换字符串中的空格,java,regex,Java,Regex,我试图用一个空格替换字符串中的所有空格。我正在尝试这个: String src = "2.       Test Sentence with spaces"; String out = src.replaceAll("\\s+", " "); System.out.println(out); 这就是我得到的: 2.       Test Sentence with spaces 点后的空格未被替换。。。为什么?您可以尝试使用Unicode类别:分隔符、空格和空格: String in

我试图用一个空格替换字符串中的所有空格。我正在尝试这个:

String src = "2.       Test Sentence with     spaces";
String out = src.replaceAll("\\s+", " ");
System.out.println(out);
这就是我得到的:

2.       Test Sentence with spaces

点后的空格未被替换。。。为什么?

您可以尝试使用Unicode类别:分隔符、空格和空格:

String input = "\u0020\u00A0\u1680\u2000\u2001\t"; //etc. 17 characters
System.out.println(input.replaceAll("[\\p{Zs}\\s]+", " "));
输出

[1 space]

有关类别
Zs
中的字符列表,请参见。您可以尝试使用Unicode类别:分隔符、空格以及空格:

String input = "\u0020\u00A0\u1680\u2000\u2001\t"; //etc. 17 characters
System.out.println(input.replaceAll("[\\p{Zs}\\s]+", " "));
输出

[1 space]

有关类别
Zs
中的字符列表,请参见。您可以尝试使用Unicode类别:分隔符、空格以及空格:

String input = "\u0020\u00A0\u1680\u2000\u2001\t"; //etc. 17 characters
System.out.println(input.replaceAll("[\\p{Zs}\\s]+", " "));
输出

[1 space]

有关类别
Zs
中的字符列表,请参见。您可以尝试使用Unicode类别:分隔符、空格以及空格:

String input = "\u0020\u00A0\u1680\u2000\u2001\t"; //etc. 17 characters
System.out.println(input.replaceAll("[\\p{Zs}\\s]+", " "));
输出

[1 space]

请参阅,以查看类别
Zs

中的字符列表,它对我来说也非常好。这是你的真实代码吗?你能在编辑器的十六进制模式下看看你的程序吗?也许有一些奇怪的Unicode代码点,你认为只有空格?所以,在十六进制模式下有“c2 a0无中断空格”符号。。。如何替换所有空格?谢谢这对我来说也很好。这是你的真实代码吗?你能在编辑器的十六进制模式下看看你的程序吗?也许有一些奇怪的Unicode代码点,你认为只有空格?所以,在十六进制模式下有“c2 a0无中断空格”符号。。。如何替换所有空格?谢谢这对我来说也很好。这是你的真实代码吗?你能在编辑器的十六进制模式下看看你的程序吗?也许有一些奇怪的Unicode代码点,你认为只有空格?所以,在十六进制模式下有“c2 a0无中断空格”符号。。。如何替换所有空格?谢谢这对我来说也很好。这是你的真实代码吗?你能在编辑器的十六进制模式下看看你的程序吗?也许有一些奇怪的Unicode代码点,你认为只有空格?所以,在十六进制模式下有“c2 a0无中断空格”符号。。。如何替换所有空格?谢谢