Java split()方法最后会删除空字符串?

时间:2009-02-13 13:40:35

标签: java split

查看以下程序。

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;

输出:

Length = 4
Length = 2
Length = 3

为什么第二个和第三个输出给出2和3而不是4.在sample.txt文件中,第2行和第3行的条件应该在给出分隔符后立即给出换行符(\n或输入)第三场。任何人都可以帮助我如何在不更改sample.txt文件的条件以及如何打印de[2](抛出ArrayIndexOutOfBoundsException)的值的情况下,将第二行和第三行的长度设置为4?

2 个答案:

答案 0 :(得分:276)

您可以指定尽可能多地应用模式:

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

See the Javadoc对于split方法,有两个参数可供参考。

答案 1 :(得分:23)

查看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时,它不会丢弃任何内容。< / p>