字符串分割Split的两种形态

当我想分割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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。