2015-06-22 61 views
-1

我有一个列表,我想获取以特定字母开头的字符串的位置。 我正在尝试此代码,但它不工作。获取从列表中的字母开始的元素

List<String> sp = Arrays.asList(splited); 
int i2 = sp.indexOf("^w.*$"); 
+0

这是完整的字符串“^ w^* $ – Amsheer

+0

貌似要使用正规?表达式'indexOf'将检查列表中的任何字符串是否等于'“^ w。* $”',而不是匹配'“^ w。* $”' –

回答

1

indexOf方法不接受正则表达式模式。相反,你可以做的方法是这样的:

public static int indexOfPattern(List<String> list, String regex) { 
    Pattern pattern = Pattern.compile(regex); 
    for (int i = 0; i < list.size(); i++) { 
     String s = list.get(i); 
     if (s != null && pattern.matcher(s).matches()) { 
      return i; 
     } 
    } 
    return -1; 
} 

然后,你根本就写:

int i2 = indexOfPattern(sp, "^w.*$"); 
1

indexOf不接受一个正则表达式,你应该遍历列表并使用MatcherPattern以达到:

Pattern pattern = Pattern.compile("^w.*$"); 
Matcher matcher = pattern.matcher(str); 

while (matcher.find()) { 
    System.out.print(matcher.start()); 
} 

也许我误解你的问题。如果你想在第一个以“w”开头的字符串列表中找到索引,那么我的答案是无关紧要的。您应该在列表上进行迭代,检查字符串startsWith是否为字符串,然后返回其索引。

+0

是的我想查找列表中的索引第一个以“w”开头的字符串。 –