Java:为什么拆分String出错了?

时间:2016-02-12 08:55:44

标签: java string split

我从.csv获得了一个String并希望将其拆分:

String line = "1,2,3,,,,false,true,,,false,false,,,,,,,,,,,,";
String data[] = line.split(",");

这是数组的结果:

data[0] - "1"
data[1] - "2"
data[2] - "3"
data[3] - ""
data[4] - ""
data[5] - ""
data[6] - "false"
data[7] - "true"
data[8] - ""
data[9] - ""
data[10] - "false"
data[11] - "false"

为什么最后的“”线会从阵列中切断?

2 个答案:

答案 0 :(得分:1)

使用-1参数

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

检查javadoc

“limit参数控制模式的应用次数,因此影响结果数组的长度。如果限制n大于零,则模式最多应用n - 1次,数组的长度将不大于n,并且数组的最后一个条目将包含超出最后匹配分隔符的所有输入。如果n是非正数,则模式将被应用尽可能多次并且数组可以具有任何长度。 如果n为零,那么模式将被应用尽可能多的次数,数组可以有任何长度,并且尾随空字符串将被丢弃。“

如果不指定调用public String[] split(String regex)的参数,则默认使用0。

来自javadoc:“此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。”

答案 1 :(得分:1)

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)

API说 "因此,结尾的空字符串不包括在结果数组中。"