0

没有替换所有输出:[3, 2, 1]

使用替换输出: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+", ""));
4

3 回答 3

2

如何使用番石榴的Joiner

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

或者,如果您不能使用任何 3rd 方库,那么以下内容replaceAll将起作用:

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

好吧,你不会总是得到相同的输出,因为HashSet不保留插入顺序。如果需要,请使用LinkedHashSet.

于 2013-10-05T10:25:04.033 回答
1

如何使用这个正则表达式,[\\[\\]].

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

如果您还想删除空格,请使用此正则表达式[\\[\\]\\s](但逗号会在那里)。

于 2013-10-05T10:23:05.890 回答
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

于 2013-10-05T10:37:45.720 回答