1

在一个工作项目中使用 Groovy 时,我遇到了这个奇怪的问题:

def string = "__RNDHPD(70.2300000..70.2310000)"
def params = []
string.find(/(?<=\().*?(?=\))/).tokenize("..").each { params << it.trim() }
// should yield [70.2300000,70.2310000] but instead results in [70, 2300000, 70, 2310000]

不过,使用替代令牌效果很好。我不认为我做错了什么,也许有人可以阐明这是我的问题还是我应该向 Groovy 开发人员报告的问题。

4

1 回答 1

2

这不是错误,文档很差。tokenize 方法只是StringTokenizer的一个包装器,因此您传递给它的字符串实际上是一个分隔符列表。请尝试拆分方法。

def string = "__RNDHPD(70.2300000..70.2310000)"
def params = []
string.find(/(?<=\().*?(?=\))/).split(/\.\./).each { params << it.trim() }

assert params == ['70.2300000','70.2310000']
于 2011-08-31T20:07:49.837 回答