Элегантный способ перебрать список строк, разделить каждую строку и вывести все, кроме N первых элементов

#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(',') }