Groovy:仅标记字符串到第三次出现的分隔符

kon*_*o11 1 string groovy split tokenize

我想对字符串进行标记化,直到某个分隔符出现第三次为止,然后将字符串的其余部分作为标记化数组的最后一个元素返回。示例:我有一个如下所示的字符串:

String someString= 1.22.33.4
Run Code Online (Sandbox Code Playgroud)

现在我通过分隔符“.”对其进行标记。像这样:

def (a, b, c, d) = someString.tokenize('.')
Run Code Online (Sandbox Code Playgroud)

它有效,但前提是点数恰好是 3。现在,如果有人输入更多点数,例如:

String someString = 1.22.33.4.55
Run Code Online (Sandbox Code Playgroud)

那么它就不起作用,因为变量的数量不匹配。所以我想确保它只标记最多第三个点,然后返回剩下的内容。所以在这种情况下我想要实现的是:

a = 1, b=22, c=33, d=4.55
Run Code Online (Sandbox Code Playgroud)

怎么做?

cfr*_*ick 5

您可以使用带有第二个参数的版本split来限制返回的项目。例如

def (a,b,c,d) = '1.22.33.4.55'.split("\\.", 4)
assert ["1","22","33","4.55"] == [a,b,c,d]
Run Code Online (Sandbox Code Playgroud)