Идиоматический способ разбить строку в Groovy - PullRequest
0 голосов
/ 06 июня 2018

Есть ли более хороший / короткий / лучший способ выполнения следующих действий:

filename = "AA_BB_CC_DD_EE_FF.xyz"
parts = filename.split("_")
packageName = "${parts[0]}_${parts[1]}_${parts[2]}_${parts[3]}"
//packageName == "AA_BB_CC_DD"

Формат остается постоянным (6 частей, разделитель _), но некоторые значения и длины AA, BB являются переменными.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Поскольку символ-разделитель между «сегментами» в имени файла-источника и в результате одинаков (_), вам не нужно разбивать имя файла и снова соединять части.

Ваша задача может быть выполнена с помощью одного регулярного выражения:

def result = filename.find(/([A-Z0-9]+_){3}[A-Z0-9]+/)
0 голосов
/ 06 июня 2018

Вы можете сделать то же самое, просто запрограммировав «соединяющуюся» часть по-разному:

Следующий результат в том же самом, что и packageName:

filename.split('_')[0..3].join('_')

Он просто используетдиапазон для нарезки массива и .join для объединения с разделителем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...