groovy list indexOf

Omn*_*ent 6 regex groovy

如果我有一个包含以下元素的列表

list[0] = "blach blah blah"
list[1] = "SELECT something"
list[2] = "some more text"
list[3] = "some more text"
Run Code Online (Sandbox Code Playgroud)

如何找到字符串以SELECT开头的位置的索引.

我可以 list.indexOf("SELECT something");

但这是一个动态列表.SELECT something永远都不会SELECT something.它可能是SELECT somethingelse或任何东西,但第一个字永远是SELECT.

有没有办法将正则表达式应用于indexOf搜索?

Dón*_*nal 20

def list = ["blach blah blah", "SELECT something", "some more text", "some more text"]
def index = list.findIndexOf { it ==~ /SELECT \w+/ }
Run Code Online (Sandbox Code Playgroud)

这将返回与正则表达式匹配的第一个项的索引/SELECT \w+/.如果要获取所有匹配项的索引,请将第二行替换为

def index = list.findIndexValues { it ==~ /SELECT \w+/ }
Run Code Online (Sandbox Code Playgroud)


Joh*_*ner 6

你可以在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"
Run Code Online (Sandbox Code Playgroud)