Groovy分裂没有最终修剪

时间:2011-03-09 12:40:01

标签: 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

问题是当使用这样的脚本时:

file.eachLine{ line ->

    items = line.split(",")
    println items.length
}

结果如下:

16
18

这让我觉得拆分功能删除了最终值。我需要它才能拥有所有物品,即使它们是空的。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我想你想做:

items = line.split(',', -1)

确保获得所有令牌

(根据the javadoc):

  

limit参数控制   应用模式的次数   因此会影响长度   结果数组。如果限制n是   大于零然后是模式   将被应用最多n - 1次,   数组的长度不会更大   比n和数组的最后一个条目   将包含除最后一个之外的所有输入   匹配的分隔符。 如果是   非正面那么模式将是   应用尽可能多次   数组可以有任何长度。如果是   零,然后将应用该模式   尽可能多的数组   可以有任何长度和尾随   空字符串将被丢弃。