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;c;

输出:

长度 = 4
长度 = 2
长度 = 3

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

4

2 回答 2

303

您可以通过以下方式指定尽可能频繁地应用模式:

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

有关详细信息,请参阅采用两个参数的 split 方法的 Javadoc

于 2009-02-13T13:49:53.657 回答
26

看看文档,这里是重要的引述:

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

如果您不喜欢这样,请查看 Fabian 的评论。调用时String.split(String),它调用String.split(String, 0)and 丢弃尾随的空字符串(如文档所说),使用它调用String.split(String, n)n < 0不会丢弃任何内容。

于 2009-02-13T13:45:59.173 回答