首先,方法split(regex)不是Groovy提供的,是Java提供的。
其次,您可以通过使用通用split(regex, int limit) 来实现您所需要的,如下所示:
def line = "abc,abc,,,"
println line.split(/,/, -1) //prints [abc, abc, , , ]
println line.split(/,/, -1).size() //prints 5
注意:-
您将在打印中结束的字符串数组在断言时会引发编译错误。但是您可以将结果用作普通列表。
line.split(/,/, -1).each{println "Hello $it"}
我宁愿使用限制 0 或重载的拆分来丢弃不需要的空字符串。
使用 -1 作为限制的解释:
强调 javadoc 中的以下语句。
limit参数控制模式的次数
应用,因此会影响结果数组的长度。如果
限制 n 大于零,则模式将应用于
大多数 n - 1 次,数组的长度将不大于 n,并且
数组的最后一个条目将包含最后匹配之外的所有输入
分隔符。如果 n 为非正数,则该模式将应用为
尽可能多次,并且数组可以有任何长度。如果 n 为零
那么该模式将被应用尽可能多的次数,数组
可以有任意长度,并且尾随的空字符串将被丢弃。