以下のプログラムをご覧ください。
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();
}
Sample.txt:
1; 2; 3; 4 A; B ;; a; b; c;
出力:
長さ= 4 長さ= 2 長さ= 3
2番目と3番目の出力が4ではなく2と3を与える理由sample.txt
ファイルでは、2番目と3番目の行の条件は、3番目のフィールドに区切り文字を与えた直後にnewline(\n
またはenter)を与える必要があります。 sample.txt
ファイルの条件を変更せずに2行目と3行目の長さを4にする方法と、de[2]
の値を出力する方法(ArrayIndexOutOfBoundsException
をスロー)を手伝ってくれませんか?
次の方法で、できるだけ頻繁にパターンを適用するように指定できます。
String[] de = data.split(";", -1);
Javadocを参照 詳細については、2つの引数を取るsplitメソッドについて。
docs 、ここで重要な引用を見てください:
[...] the array can have any length, and trailing empty strings will be discarded.
気に入らない場合は、ファビアンのコメントをご覧ください。 String.split(String)
を呼び出すと、String.split(String, 0)
が呼び出され、末尾の空の文字列が破棄されます(ドキュメントに記載されているとおり)。String.split(String, n)
をn < 0
で呼び出すと、何も破棄されません。