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

Tôi có đoạn code ở trên, nhưng tôi không thể làm việc ra lý do tại sao nó tạoString.replaceAll Strange Hành vi

h i h e l l o 

hơn

hi hello 

Rất cám ơn

Trả lời

15

Sử dụng + định lượng để khớp với 1 hoặc nhiều khoảng trống thay vì *: -

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

\\s* có nghĩa là phù hợp với 0 hoặc nhiều không gian và sẽ khớp với ký tự trống trước mỗi ký tự và được thay thế bằng dấu cách.

+2

+1 Thay vì "giữa", tôi sẽ nói "trước" vì nó sẽ khớp với ký tự đầu tiên. –

+0

@PeterLawrey .. Bạn nói đúng. Câu trả lời đã chỉnh sửa. :) –

9

* khớp với 0 hoặc nhiều không gian, tôi nghĩ bạn muốn đổi thành + để khớp với 1 hoặc nhiều không gian.