122

以下のプログラムをご覧ください。

try {
    for (String data : Files.readAllLines(Paths.get("D:/sample.txt"))){
        String[] de = data.split(";");
        System.out.println("Length = " + de.length);
    }
} catch (IOException e) {
    e.printStackTrace();
}

サンプル.txt:

1;2;3;4
A;B;;
a;b;c;

出力:

長さ = 4
長さ = 2
長さ = 3

2 番目と 3 番目の出力が 4 ではなく 2 と 3 を与えているsample.txt理由\nsample.txtファイルの状態を変更せずに 2 行目と 3 行目の長さを 4 にする方法とde[2](throws ArrayIndexOutOfBoundsException)の値を出力する方法を教えてください。

4

2 に答える 2

303

次の方法で、できるだけ頻繁にパターンを適用するように指定できます。

String[] de = data.split(";", -1);

詳細については、 2 つの引数を取る split メソッドの Javadocを参照してください。

于 2009-02-13T13:49:53.657 に答える
26

docsを見てください。重要な引用は次のとおりです。

[...] the array can have any length, and trailing empty strings will be discarded.

それが気に入らない場合は、Fabian のコメントをご覧ください。を呼び出すとString.split(String)、それを呼び出しString.split(String, 0)て末尾の空の文字列を破棄します(ドキュメントにあるように)。それを呼び出しString.split(String, n)n < 0も何も破棄されません。

于 2009-02-13T13:45:59.173 に答える