Java split() method strips empty strings at the end?

raja picture raja · Feb 13, 2009 · Viewed 64.2k times · Source

Check out the below program.

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;

Output:

Length = 4
Length = 2
Length = 3

Why second and third output is giving 2 and 3 instead of 4. In sample.txt file, condition for 2nd and 3rd line is should give newline(\n or enter) immediately after giving delimiter for the third field. Can anyone help me how to get length as 4 for 2nd and 3rd line without changing the condition of the sample.txt file and how to print the values of de[2] (throws ArrayIndexOutOfBoundsException)?

Answer

Fabian Steeg picture Fabian Steeg · Feb 13, 2009

You can specify to apply the pattern as often as possible with:

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

See the Javadoc for the split method taking two arguments for details.