-3

HashSetをコンマで区切られた区切り文字列に変換しようとしていますが、問題は、図のように、文字列の最後に余分なコンマが表示されることです。文字列の最後にある余分なカンマを削除する方法を教えてください。

import java.util.HashSet;
import java.util.Set;

public class Test {

    private static Set<String> symbolsSet = new HashSet<String>();

    static {

        symbolsSet.add("Q1!GO1");
        symbolsSet.add("Q2!GO2");
        symbolsSet.add("Q3!GO3");

    }

    public static void main(String args[]) {
        String[] a = symbolsSet.toArray(new String[0]);
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < a.length; i++) {
            sb.append(a[i] + ",");
        }
        System.out.println(sb.toString());

    }

}

出力:

Q3!GOO3,Q2!GO2,Q1!GO1,
4

12 に答える 12

3

試してみてください:

for (int i = 0; i < a.length; i++) {
    if ( i > 0 ) {
        sb.append(",");
    }
    sb.append(a[i]);
}
于 2013-03-25T11:36:14.420 に答える
3

このようにしてください

for (int i = 0; i < a.length - 1; i++) {
    sb.append(a[i] + ",");
}

sb.append(a[a.length - 1]);
于 2013-03-25T11:36:21.940 に答える
2

これを行うには多くの方法があります。以下は、を使用した正規表現ソリューションです。String#replaceAll()

String s= "abc,";
s = s.replaceAll(",$", "");
于 2013-03-25T11:35:57.290 に答える
2
StringBuffer sb = new StringBuffer();
String separator = "";
for (int i = 0; i < a.length; i++) {
    sb.append(separator).append(a[i]);
    separator = ",";
}
于 2013-03-25T11:42:29.680 に答える
1

与えられたシナリオでは、String.lastIndexOfメソッドは非常に便利です。

String withComma= sb.toString();
String strWithoutLastComma = withComma.substring(0,withComma.lastIndexOf(","));
System.out.println(strWithoutLastComma);
于 2013-03-25T11:39:00.887 に答える
0
   String str = sb.toString().substring(0, sb.toString().length()-1);

または最後の要素でない場合にのみ追加

  for (int i = 0; i < a.length; i++) {
    if ( i > 0 ) {
        sb.append(",");
    }
    sb.append(a[i]);
}
于 2013-03-25T11:35:54.400 に答える
0
public static void main(String args[]) {
    String[] a = symbolsSet.toArray(new String[0]);
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < a.length-1; i++) {
        //append until the last with comma
        sb.append(a[i] + ",");
    }
    //append the last without comma
    sb.append(a[a.length-1]);
    System.out.println(sb.toString());

}
于 2013-03-25T11:37:31.293 に答える
0

これを試して :

 for (int i = 0; i < a.length; i++) {
        if(i == a.length - 1) {
             sb.append(a[i]);  // Last element. Dont append comma to it
        } else {
        sb.append(a[i] + ","); // Append comma to it. Not a last element
        }
    }
    System.out.println(sb.toString());
于 2013-03-25T11:38:08.473 に答える
0
public static void main(String args[])
{
    String[] a = symbolsSet.toArray(new String[0]);

    StringBuffer sb = new StringBuffer();

    for (int i = 0; i < a.length; i++)
    {
        sb.append(a[i] + ",");
    }

    System.out.println(sb.toString().substring(0, sb.toString().length - 1));

}

また

public static void main(String args[])
{
    String[] a = symbolsSet.toArray(new String[0]);

    StringBuffer sb = new StringBuffer();

    for (int i = 0; i < a.length; i++)
    {
        sb.append(a[i]);

        if(a != a.length - 1)
        {
            sb.append(",");
        }
    }

    System.out.println(sb.toString());
}
于 2013-03-25T11:39:01.523 に答える
0

これを試して、

for (int i = 0; i < a.length-1; i++) {
      if(a.length-1!=i)
            sb.append(a[i] + ",");
      else
      {
            sb.append(a[i]);
            break;
      }
}
于 2013-03-25T11:44:31.317 に答える
0

これで試してください

for (int i = 0; i < a.length; i++) {
    if(i == a.length - 1 )
    {
        sb.append(a[i]);
    } else {
        sb.append(a[i] + ",");
    }
}
于 2013-03-25T11:47:00.777 に答える
0

あなたはあなた自身のSeparatorクラスを成長させることができます:

public class SimpleSeparator<T> {
  private final String sepString;
  boolean first = true;

  public SimpleSeparator(final String sep) {
    this.sepString = sep;
  }

  public String sep() {
    // Return empty string first and then the separator on every subsequent invocation.
    if (first) {
      first = false;
      return "";
    }
    return sepString;
  }

  public static void main(String[] args) {
    SimpleSeparator sep = new SimpleSeparator(",");
    System.out.print("[");
    for ( int i = 0; i < 10; i++ ) {
      System.out.print(sep.sep()+i);
    }
    System.out.print("]");
  }

}

配列、コレクション、イテレータ、イテレータなどを分離する静的メソッドを使用して、このクラスで実行できる負荷はさらに多くなります。

于 2013-03-25T11:52:29.770 に答える