2011-08-31 68 views
1

使用Groovy亂搞的工作項目,我就遇到了這個怪胎:Groovy 1.8.0 String類中的錯誤.tokenize(String)方法?

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開發人員報告的問題有所瞭解。

回答

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'] 
相關問題