Как получить все числовые значения из списка, кроме чисел, относящихся к определенным строкам - PullRequest
2 голосов
/ 29 марта 2019

Я хочу получить все числа из моей строки, кроме чисел, связанных с шаблоном строки 'SPN'

 def layoutStr = '1 ABC, 2 DEF, 3 SPN, 4 GHI'

 def splitted = layoutStr.split(',')
   *.trim()                        // remove white space from all the entries (note *)
   *.dropWhile { it ==~ /[^0-9 ]/ } // drop until you hit a char that isn't a letter or a space in the list
   .findAll { it[0] != 'SPN' }     // if a group starts with SPN, drop it

assert splitted == [1, 2, 4]

Похоже, это не то, что я ожидаю,Я думаю, что пропустил этап повторного сбора

1 Ответ

3 голосов
/ 29 марта 2019

Вы можете использовать findResults, который собирает только ненулевые элементы, поэтому вы можете использовать его для фильтрации и преобразования одновременно:

def layoutStr = '1 ABC, 2 DEF, 3 SPN, 4 GHI'

def splitted = layoutStr.split(',')
    *.trim()        // remove white space from all the entries (note *)
    *.split(/\s+/)  // Split all the entries on whitespace
    .findResults { it[1] == 'SPN' ? null : it[0] as Integer }

assert splitted == [1, 2, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...