Groovy 无最终修剪的槽形劈裂
我正在解析一个CVS文件,如下所示:Groovy 无最终修剪的槽形劈裂,groovy,Groovy,我正在解析一个CVS文件,如下所示: "07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,, "07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com 16 18 问题是,当使用这样的脚本时: file.eachLine{ line -> it
"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,,
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com
16
18
问题是,当使用这样的脚本时:
file.eachLine{ line ->
items = line.split(",")
println items.length
}
结果如下所示:
"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,,
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com
16
18
这让我想到,split函数会删除一个最终值。我需要它有所有的项目,即使他们是空的。有什么想法吗?我想你应该:
items = line.split(',', -1)
确保你拿到所有的代币
(根据):
limit参数控制
应用模式的次数
因此会影响
生成的数组。如果限制n为
大于零,则该模式无效
最多应用n-1次,
数组的长度将不会大于
大于n,并且数组的最后一个条目
将包含最后一个之外的所有输入
匹配的分隔符如果n为
非正,则模式将为
尽可能多次使用,并且
数组可以有任意长度。如果n是
零,则将应用该模式
在尽可能多的情况下,阵列
可以有任何长度和尾随
空字符串将被丢弃
使用库而不是自己为csv重新创建解析逻辑可能是值得的。我建议使用opencsv或groovycsv,这是opencsv的groovy包装(免责声明:我是groovycsv的作者)。您可以在此处阅读有关在groovy中解析csv的更多信息: