0

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

3 に答える 3

2

GuavaJoiner:

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ください。

于 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 に答える