我正在解析如下的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
这让我觉得拆分功能删除了最终值。我需要它才能拥有所有物品,即使它们是空的。有什么想法吗?
答案 0 :(得分:4)
我想你想做:
items = line.split(',', -1)
确保获得所有令牌
(根据the javadoc):
limit参数控制 应用模式的次数 因此会影响长度 结果数组。如果限制n是 大于零然后是模式 将被应用最多n - 1次, 数组的长度不会更大 比n和数组的最后一个条目 将包含除最后一个之外的所有输入 匹配的分隔符。 如果是 非正面那么模式将是 应用尽可能多次 数组可以有任何长度。如果是 零,然后将应用该模式 尽可能多的数组 可以有任何长度和尾随 空字符串将被丢弃。