2009-10-08 59 views
4

如果我有以下要素常规列表的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搜索?

+0

我就从正则表达式的流浪远在Java性能问题的第二行,但看看http://java.sun.com/docs/books/tutorial/essential/regex /。除了我的头顶,我不认为有一个简单的方法来做到这一点,除了手动迭代你的数组。 – bgw 2009-10-08 22:07:39

回答

5

您可以找到使用正则表达式:

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