2013-10-05 81 views
0

沒有的replaceAll輸出:[3, 2, 1]字符串的replaceAll多個字符

用的replaceAll輸出:3,2,1

反正有沒有做到這一點使用單一的replaceAll方法,像

 set.toString().replaceAll("\\[\\]\\s+",""); 

現在代碼

 Set<String> set = new HashSet<String>();  
     set.add("1"); 
     set.add("2"); 
     set.add("3"); 
     System.out.println(set.toString().replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s+", "")); 

回答

2

如何使用Guava's Joiner

String joined = Joiner.on(",").join(set); 
System.out.println(joined); // 1,2,3 

或者,如果你不能使用任何第三方庫,然後按照replaceAll會工作:

System.out.println(set.toString().replaceAll("[\\[\\]]|(?<=,)\\s+", "")); // 1,2,3 

好吧,你不會總是得到與HashSet相同的輸出不會保留插入順序。如果你想要的話,請使用LinkedHashSet

+0

我知道這件事的耆那教想爲是如何替換多個正則表達式與單取代所有的方法,得到了它。謝謝你。 – sunleo

+0

@sunleo。你總是可以使用交替 - '|'合併多個正則表達式。 –

+0

感謝您的深入和更多的信息。 – sunleo

1

usi怎麼樣? ng這個正則表達式,[\\[\\]]

System.out.println(set.toString().replaceAll("[\\[\\]]", "")); // Output is 3,2,1 

如果你也想去掉空格,然後使用這個表達式,[\\[\\]\\s](但逗號將在那裏)。

0

replaceAll("[^\\d|,]", "");將取代所有不是數字(\\d)或(|)逗號(,)。帽子符號^表示不在Java正則表達式中,方括號[]表示一組。所以我們的設定是「不是數字或逗號的一切」。

Set<String> set = new HashSet<String>(); 
set.add("1"); 
set.add("2"); 
set.add("3"); 
System.out.println(set.toString().replaceAll("[^\\d|,]", "")); 

輸出:

3,2,1