groovy list indexOf

29,728

Solution 1

You can use a regex in find:

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"

Solution 2

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

This will return the index of the first item that matches the regex /SELECT \w+/. If you want to obtain the indices of all matching items replace the second line with

def index = list.findIndexValues { it ==~ /SELECT \w+/ }
Share:
29,728
Omnipresent
Author by

Omnipresent

I'm everywhere

Updated on July 20, 2022

Comments

  • Omnipresent
    Omnipresent almost 2 years

    If I have a list with following elements

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

    How can I find the index of where the string starts with SELECT.

    I can do list.indexOf("SELECT something");

    But this is a dynamic list. SELECT something wont always be SELECT something. it could be SELECT somethingelse or anything but first word will always be SELECT.

    Is there a way to apply regex to the indexOf search?