Ошибка в методе Groovey 1.8.0 String класса .tokenize (String)? - PullRequest
1 голос
/ 31 августа 2011

Возиться с 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 Ответ

2 голосов
/ 01 сентября 2011

Это не ошибка, документация просто очень плохая. Метод 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']
...