Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String.replaceAll Strange Behaviour

Tags:

java

string

regex

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

I have the code above, but I can't work out why it produces

 h i  h e l l o 

rather than

 hi hello

Many thanks

like image 255
DreamsOfHummus Avatar asked Dec 19 '12 20:12

DreamsOfHummus


2 Answers

Use + quantifier to match 1 or more spaces instead of *: -

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

\\s* means match 0 or more spaces, and will match an empty character before every character and is replaced by a space.

like image 112
Rohit Jain Avatar answered Oct 06 '22 09:10

Rohit Jain


The * matches 0 or more spaces, I think you want to change it to + to match 1 or more spaces.

like image 35
Paige Ruten Avatar answered Oct 06 '22 09:10

Paige Ruten