当我想分割CSV文件时,我遇到了一个奇怪的错误
这是我的CSV文件
name,age,job,phone,address,score
a,b,c,,
String data=readDataLine(csv);
在我将数据行读取出的时候,紧接着我调用了分割函数
data.split(",")
这个代表以','
为分割
我预期中的结果应该是[a,b,c,null,null,null]
但是!返回结果竟然是[a,b,c]
这就离谱!后面的逗号被吃掉了吗?
后来看了一下java doc发现分割函数有两个实现
split(String,int)
和split(String)
右边的方法调用了this.split(String,0)
第二个参数(limit)代表分割的次数
假如它是一个正数,它代表只能分割几次
例如a,b,c,d
,limit=2
那这个结果为["a","b","c,d"],懂我意思吧?只分了两个逗号
假如它是0,代表尽可能的分割,但是最后的空白项会被舍去
例如a,b,,
,limit=0
结果为["a","b"],后面的空项被自动舍去了
假如它是-1,代表尽可能分割,但是不舍去最后的空白项
例如a,b,,
,limit=-1
结果终于正确了,["a","b",null,null]
所以正确的CSV拆分方法应该是带有-1参数的split
网友评论