我正在解析如下的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
Run Code Online (Sandbox Code Playgroud)
问题是当使用这样的脚本时:
file.eachLine{ line ->
items = line.split(",")
println items.length
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
16
18
Run Code Online (Sandbox Code Playgroud)
这让我觉得split函数删除了最终值.我需要它才能拥有所有物品,即使它们是空的.任何的想法?
我想你想做:
items = line.split(',', -1)
Run Code Online (Sandbox Code Playgroud)
确保您获得所有代币
(根据javadoc):
limit 参数控制应用模式的次数,因此会影响结果数组的长度。如果限制 n 大于零,则该模式将最多应用 n - 1 次,数组的长度将不大于 n,并且数组的最后一个条目将包含最后一个匹配分隔符之外的所有输入。如果 n 为非正数,则该模式将被应用尽可能多次,并且数组可以具有任意长度。如果 n 为零,则该模式将被应用尽可能多次,数组可以具有任意长度,并且尾随的空字符串将被丢弃。
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |