#groovy
#заводной
Вопрос:
Например, этот список содержит следующие строки:
array[0]: "text1,text2,text3,text4,text5" array[1]: "text1,text2,text3,text4,text5,text6,text7" array[2]: "text1,text2,text3,text4,text5,text6"
Мне нужно проигнорировать первые 3 сообщения и взять остальные.
Результат должен быть:
"text4,text5" "text4,text5,text6,text7" "text4,text5,text6"
Я полагаю, что мне нужно разделить строку с помощью запятой и выполнить итерацию от 2 до длины массива для каждого элемента. Есть ли элегантный способ сделать это?
Комментарии:
1.
output_value = ",".join(input_value.split(",")[3:])
— повторите это для всех элементов.2. это
python
илиgroovy
?3. Вопрос к заводному.
Ответ №1:
Привет, вы можете использовать понимание списка
array = ["text1,text2,text3,text4,text5", "text1,text2,text3,text4,text5,text6,text7", "text1,text2,text3,text4,text5,text6"] result = [i.split(",")[2:] for i in array] print(result)
Комментарии:
1. Спасибо, но это на питоне. Вы не знаете, возможно ли это в Groovy? Ценить.
Ответ №2:
Для Groovy вы можете сделать что-то подобное:
def input = [ "text1,text2,text3,text4,text5", "text1,text2,text3,text4,text5,text6,text7", "text1,text2,text3,text4,text5,text6", ] def result = input.collect { it.split(',').drop(3).join(',') } result.each { println it }
который выводит
text4,text5 text4,text5,text6,text7 text4,text5,text6
Ответ №3:
Для любителей 1-лайнеров:
def input = [ "text1,text2,text3,text4,text5", "text1,text2,text3,text4,text5,text6,text7", "text1,text2,text3,text4,text5,text6", ] def output = input*.split(',')*.getAt( 3..-1 )*.join(',') output.each this.amp;println
С принтами:
text4,text5 text4,text5,text6,text7 text4,text5,text6
Ответ №4:
array = array.collect{ i-gt; i[3..-1] }
если вы хотите просто распечатать
array.each{ i-gt; println i[3..-1].join(',') }