Подтвердить что ты не робот

String.replaceВсе странное поведение

String s = "hi                  hello";
s = s.replaceAll("\\s*", " ");
System.out.println(s);

У меня есть код выше, но я не могу понять, почему он производит

 h i  h e l l o 

а не

 hi hello

Большое спасибо

4b9b3361

Ответ 1

Использовать квантор + для соответствия 1 или более пробелам вместо *: -

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

\\s* означает совпадение 0 или более пробелов и будет соответствовать пустому символу перед каждым символом и заменяется пробелом.

Ответ 2

* соответствует 0 или более пробелам, я думаю, вы хотите изменить его на +, чтобы соответствовать 1 или более пробелам.