String.replaceAll Strange Behavior

2022-09-04 08:03:49
String s = "hi                  hello";
s = s.replaceAll("\\s*", " ");
System.out.println(s);

我有上面的代码,但我无法弄清楚为什么它会产生

 h i  h e l l o 

而不是

 hi hello

非常感谢


答案 1

使用量词匹配 1 个或多个空格,而不是 : -+*

s = s.replaceAll("\\s+", " ");

\\s*表示匹配 0 个或更多空格,并将在每个字符之前匹配一个空字符,并由空格替换。


答案 2

匹配0或更多空格,我认为您要将其更改为匹配1个或多个空格。*+