groovy list indexOf

时间:2009-10-08 21:53:01

标签: regex groovy

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

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 个答案:

答案 0 :(得分:18)

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+/ }

答案 1 :(得分: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"