2009-10-08 62 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+/ }