如果我在Groovy中有一个字符串,那么......
'user.company.name'
...我希望从该字符串中获取“公司”和“名称”这个词,最好的方法是什么?
我在考虑这样的事情,但我不确定它是否是最有效/最常见的方式:
def items = 'user.company.name'.tokenize('.')
def company = items[-2]
def name = items[-1]
有更好的方法吗?
答案 0 :(得分:2)
如果您一直在寻找字符串的最后两个部分,那么另一种选择是使用这样的正则表达式:
'user.company.name'.find(/(.*)\.(.*)\.(.*)/) { full, user, company, name ->
assert user == "user"
assert company == "company"
assert name == "name"
}
这样做的一个优点是,如果字符串没有“user.company.name”格式,则无需担心数组索引异常。如果正则表达式不匹配,则不会执行闭包。
答案 1 :(得分:1)
您还可以使用将返回String数组的split()
。 tokenize()
返回一个List,所以如果我需要遍历标记,我会使用它。
items = 'user.company.name'.split('\\.')
company = items[1]
name = items[2]
有关这两个字符串方法的说明,请参阅链接here