获取Groovy字符串的两个部分的最佳方法是什么?

时间:2010-03-06 20:10:54

标签: parsing string groovy

如果我在Groovy中有一个字符串,那么......

'user.company.name'

...我希望从该字符串中获取“公司”和“名称”这个词,最好的方法是什么?

我在考虑这样的事情,但我不确定它是否是最有效/最常见的方式:

def items = 'user.company.name'.tokenize('.')
def company = items[-2]
def name = items[-1]

有更好的方法吗?

2 个答案:

答案 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