String 字符后的子字符串

String 字符后的子字符串,string,groovy,String,Groovy,我正在寻找一种在Groovy中从字符串中漂亮地提取“用户id”的方法。假设我有字符串“key::${userId}”,例如: String s = "key::123456" 我可以用java风格提取用户ID,如下所示 Long.parseLong(s.substring(s.indexOf("::") + 2)) 但我相信有一种方法可以使它更短、更整洁您可以使用多重赋值运算符结合标记化方法: def(quot,userId)=“key::123456”。标记化(:) 断言用户ID==“12

我正在寻找一种在Groovy中从字符串中漂亮地提取“用户id”的方法。假设我有字符串
“key::${userId}”
,例如:

String s = "key::123456"
我可以用java风格提取用户ID,如下所示

Long.parseLong(s.substring(s.indexOf("::") + 2))

但我相信有一种方法可以使它更短、更整洁

您可以使用多重赋值运算符结合
标记化
方法:

def(quot,userId)=“key::123456”。标记化(:)
断言用户ID==“123456”

您可以将多重赋值运算符与
标记化
方法结合使用:

def(quot,userId)=“key::123456”。标记化(:)
断言用户ID==“123456”

如果
键::
始终是前缀,则可以使用
-
运算符,并结合
作为字符串到长字符串转换的
关键字:

String s = 'key::123456' 
long userId = (s - 'key::') as long

如果
键::
始终是前缀,则可以使用
-
运算符,并将
组合作为字符串到长字符串的转换的
关键字:

String s = 'key::123456' 
long userId = (s - 'key::') as long

最短的:
s.split(::”[1]尽可能长
为了高尔夫:
s[5..-1]尽可能长
最短的:
s.split(:”[1]尽可能长
为了高尔夫:
s[5..-1]尽可能长