-2

私は文字列を持っています

str=123|apple|apple|apple|dog$

「|」を使用して文字列を区切るのが好きです キャラクター。

    String str = "123|apple|apple|apple|dog$";
    StringTokenizer strString = new StringTokenizer(str..nextToken(), "|");
    int i;
    while (strString.hasMoreElements()) {
        if (i == 0)
            str1 = Loginstring.nextToken();
        else if (i == 1)
            str2 = Integer.Loginstring.nextToken();
        else if (i == 2) {
            str3 = Loginstring.nextToken();
            break;
        }
        i = i + 1;
    }

しかし、それは最初のループ以降で終了します(つまり、iが1を超えるとループから終了することを意味します)、実際には、それが起こるかどうかはわかりません。何が問題なのか

4

2 に答える 2

5

これはあなたが達成しようとしていることです

String str1 = "", str2 = "", str3 = "", str4 = "", str5 = "";
String str = "123|apple|apple|apple|dog$";
StringTokenizer strString = new StringTokenizer(str, "|");
int k = 0;
while (strString.hasMoreElements()) {
    if (k == 0)
        str1 = strString.nextToken();
    else if (k == 1)
        str2 = strString.nextToken();
    else if (k == 2) {
        str3 = strString.nextToken();
    } else if (k == 3) {
        str4 = strString.nextToken();
    } else if (k == 4) {
        str5 = strString.nextToken();
        break;
    }
    k = k + 1;
}
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);

しかし、これは1つのステートメントで簡単に行うことができます。

String[] tokens = str.split("\\|"); // this is that single statment
for (String token : tokens)
    System.out.println(token);

str1 = tokens[0];
str2 = tokens[1];
str3 = tokens[2];
str4 = tokens[3];
str5 = tokens[4];

System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);
于 2012-07-19T12:24:49.133 に答える
1

String.split("\\|")文字列を分割するために使用します。

于 2012-07-19T12:10:38.780 に答える