Groovy 1.8.0 String类.tokenize(String)方法中的错误?

时间:2011-08-31 19:48:22

标签: groovy gdk

为了一个工作项目乱搞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开发者报告。

1 个答案:

答案 0 :(得分:2)

这不是一个错误,文档非常差。 tokenize方法只是StringTokenizer的包装器,因此传递给它的字符串实际上是一个分隔符字符列表。请改用split方法。

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

assert params == ['70.2300000','70.2310000']