我从.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"
为什么最后的“”线会从阵列中切断?
答案 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说 "因此,结尾的空字符串不包括在结果数组中。"