Java split()方法在最后剥离空string?

看看下面的程序。

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.在sample.txt文件中,第二行和第三行的条件是在给第三个字段分隔符之后立即给出换行符( \n或者input)。 任何人都可以帮助我如何得到第二和第三行的长度为4,而不改变sample.txt文件的条件以及如何打印de[2]的值(抛出ArrayIndexOutOfBoundsException )?

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

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

有关详细信息, 请参阅Javadoc获取两个参数的split方法。

看看文档 ,这里的重要报价:

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

如果你不喜欢这个,看看费边的评论。 当调用String.split(String) ,它调用String.split(String, 0)并且在调用String.split(String, n)时会丢弃尾随的空string(如文档所述)放弃任何东西。