2012-12-19 10 views
13
String s = "hi     hello"; 
s = s.replaceAll("\\s*", " "); 
System.out.println(s); 

Ho il codice di cui sopra, ma non riesco a capire il motivo per cui produceString.replaceAll Strange Behavior

h i h e l l o 

piuttosto che

hi hello 

Molte grazie

risposta

15

Usa + quantificatore per abbinare 1 o più spazi anziché *: -

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

\\s* significa corrispondere a 0 o più spazi e corrisponderà a un carattere vuoto prima di ogni carattere e verrà sostituito da uno spazio.

+2

+1 Invece di "tra", direi "prima" perché corrisponderà prima del primo carattere. –

+0

@PeterLawrey .. Hai ragione. Risposta modificata :) –

9

Il * corrisponde a 0 o più spazi, penso che si desideri modificarlo in + per abbinare 1 o più spazi.