Java split() 方法在末尾剥离空字符串?

2022-08-31 08:43:00

查看以下程序。

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;

输出:

Length = 4
Length = 2
Length = 3

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


答案 1

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

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

有关详细信息,请参阅 Javadoc 以获取采用两个参数的拆分方法。


答案 2

看看文档,这里有重要的引用:

[...] 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