字符串replaceAll多个字符

时间:2013-10-05 10:21:16

标签: java regex string

没有replaceall输出:[3, 2, 1]

使用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+", ""));

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如何使用此正则表达式[\\[\\]]

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

如果你想删除空白区域,请使用此正则表达式[\\[\\]\\s](但逗号将在那里)。

答案 2 :(得分: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