当元素中只包含部分字符串时,如何从列表中获取索引?

时间:2012-12-03 10:46:21

标签: java

说我有一个字符串

String s = bob

和ArrayList

["alex [available]", "bob [away]", "craig [busy]", "david [gone fishing]"]

如何搜索列表以获取[1]处的元素?

5 个答案:

答案 0 :(得分:6)

String strToSearch = yourString + " [";//"bob ["

for (int i = 0; i < list.size(); i++){
    if (list.get(i).startsWith(strToSearch)){
         neededIndex = i;
         break;
    }
}

答案 1 :(得分:2)

您必须迭代列表并对每个项目执行String.contains("bob")

for (String item : listOfItems) {
   if (item.contains("bob") {
      return item;
   }
}

也许您应该将搜索字词扩展为bob [,因为“bob”可能包含在anoter名称中。

答案 2 :(得分:1)

你可能应该使用Map而不是List。在这种情况下,您需要使用循环。

List<String> nameStatusList = ...
String s = "bob";

FOUND: {
    for(String ns: nameStatusList)
       if(ns.startsWith(s + " [")) {
           System.out.println(ns);
           break FOUND;
       }
    System.out.println("Couldn't find " + s);
}

答案 3 :(得分:0)

for (String str: list) {
   if (str.contains(s)) {
      return str;
   }
}

str.contains(s)替换为str.matches("^"+s+" [")以防万一。

答案 4 :(得分:0)

这样的事情:

String string = "bob";

private List <String> list = new ArrayList<String>(){{
    add("alex [available]");
    add("bob [away]");
    add("craig [busy]");
    add("david [gone fishing]");
}};


public void method(){
    String answer;

    for (String s : list){
        if (s.contains(string)){
            answer = s;
            break;
        }
    }
}