groovy список indexOf

если у меня есть список с элементами

list[0] = "blach blah blah"
list[1] = "SELECT something"
list[2] = "some more text"
list[3] = "some more text"

как я могу найти индекс того, где строка начинается с SELECT.

Я могу сделать list.indexOf("SELECT something");

но это динамический список. SELECT something не будет SELECT something. это может быть SELECT somethingelse или что-нибудь, кроме первого слова всегда будет SELECT.

есть ли способ применить регулярное выражение к поиску indexOf?

2 ответов


вы можете использовать регулярное выражение в поле найти:

def list = ["blach blah blah", "SELECT something", "some more text", "some more text"]

def item = list.find { it ==~ /SELECT \w+/ }

assert item == "SELECT something"

list[1] = "SELECT somethingelse"

item = list.find { it ==~ /SELECT \w+/ }

assert item == "SELECT somethingelse"

def list = ["blach blah blah", "SELECT something", "some more text", "some more text"]
def index = list.findIndexOf { it ==~ /SELECT \w+/ }

это вернет индекс первого элемента, который соответствует регулярному выражению /SELECT \w+/. Если вы хотите получить индексы все соответствующие элементы заменяют вторую строку на

def index = list.findIndexValues { it ==~ /SELECT \w+/ }