Groovy拆分似乎忽略了空字段.
这是代码:
line = abc,abc,,,
line.split(/,/)
println
Run Code Online (Sandbox Code Playgroud)
仅打印..
abc abc
Run Code Online (Sandbox Code Playgroud)
它似乎忽略了空字段.如何使用拆分检索空字段?
dma*_*tro 11
首先,Groovy不提供方法split(regex),它由Java提供.
其次,您可以使用泛型拆分(regex,int limit)实现所需,如下所示:
def line = "abc,abc,,,"
println line.split(/,/, -1) //prints [abc, abc, , , ]
println line.split(/,/, -1).size() //prints 5
Run Code Online (Sandbox Code Playgroud)
注意: -
在打印时最终会出现的字符串数组会在声明时抛出编译错误.但您可以将结果用作普通列表.
line.split(/,/, -1).each{println "Hello $it"}
Run Code Online (Sandbox Code Playgroud)
我宁愿使用limit 0或重载拆分来丢弃不需要的空字符串.
关于使用-1作为限制的说明:
强调来自javadoc的以下语句.
limit参数控制模式的应用次数,因此会影响结果数组的长度.如果限制n大于零,那么模式将最多应用n - 1次,数组的长度将不大于n,并且数组的最后一个条目将包含超出最后匹配分隔符的所有输入.如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度.如果n为零,那么模式将被应用尽可能多的次数,数组可以具有任何长度,并且将丢弃尾随的空字符串.