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