问题描述
我要对字符串进行标记化,直到出现第三个定界符,然后将字符串的其余部分作为标记化数组的最后一个元素返回。 例: 我有一个看起来像这样的字符串:
String someString= 1.22.33.4
现在通过定界符'。对其进行标记。像这样:
def (a,b,c,d) = someString.tokenize('.')
它有效,但前提是点数恰好是3。 现在,如果有人放置更多点,例如:
String someString = 1.22.33.4.55
然后它将不起作用,因为变量数量不匹配。因此,我想确保它只会对最多第三个点进行标记化,然后将剩下的全部归还。所以在这种情况下我想要实现的是:
a = 1,b=22,c=33,d=4.55
该怎么做?
解决方法
您可以将split
的版本与第二个参数一起使用来限制
返回的项目。例如
def (a,b,c,d) = '1.22.33.4.55'.split("\\.",4)
assert ["1","22","33","4.55"] == [a,d]
,
不是一个班轮,但它可以工作:
String someString= '1.22.33.4.55'
def stringArray = someString.tokenize('.')
def (a,c) = stringArray
def d = stringArray.drop(3).join('.')
println "a=$a,b=$b,c=$c,d=$d"
结果:
a=1,b=22,c=33,d=4.55