在android

时间:2015-07-21 08:19:36

标签: android arraylist string-comparison

在我的Android应用程序中,我试图将字符串与arraylist进行比较,请查看我的下面的代码

ArrayList<String> namelist = new ArrayList<String>();
        ArrayList<String> withoutcomma = new ArrayList<String>();

        namelist.add("chennai , In");
        namelist.add("mumbai, In");
        namelist.add("Usak,TR");
        namelist.add("Ushuaia,AR");
        namelist.add("San Francisco,US");

        for (int i = 0; i < namelist.size(); i++) {
            String[] value = namelist.get(i).split("\\s*,\\s*");
            withoutcomma.add(value[0]);
            withoutcomma.add(value[1]);
        }

        String name = "i want to go chennai to mumbai";
        String[] splitname = name.split(" ");

        for (int i = 0; i < splitname.length; i++) {
            if (withoutcomma.contains(splitname[i])) {
                System.out.println(splitname[i]);
            }
        }

它返回正确的输出

chennai 
mumbai

但无法获得san fransisco的价值,因为空白区域,我完全被击中,即使我使用了模式和匹配但无法处理空白区域

有人可以帮忙吗??

3 个答案:

答案 0 :(得分:2)

您可以在withoutcomma中查找String name数组的值,而不是按空格分割。

for (String str : withoutcomma)
{
    if (name.contains(str))
    {
        System.out.println("Found city: " + str + " at position: " + name.indexOf(str));
    }
}

如果城市的顺序很重要,您可以使用String name保存int idx = name.indexOf(str)中找到的值的索引。

答案 1 :(得分:2)

在逗号和任何空格处分割单词。因此,当您获得多字地名时,将其存储在数组中,然后使用它进行比较。适合我。

使用此:

    ArrayList<String> namelist = new ArrayList<String>();
    ArrayList<String> withoutcomma = new ArrayList<String>();

    namelist.add("chennai , In");
    namelist.add("mumbai, In");
    namelist.add("Usak,TR");
    namelist.add("Ushuaia,AR");
    namelist.add("San Francisco,US");

    for (int i = 0; i < namelist.size(); i++) {
        String[] value = namelist.get(i).split("[(\\s*,\\s*)\\s]");
        for(String word : value) {
            withoutcomma.add(word);
        }
    }

    String name = "i want to go San Francisco to mumbai";
    String[] splitname = name.split(" ");

    for (int i = 0; i < splitname.length; i++) {
        if (withoutcomma.contains(splitname[i])) {
            System.out.println(splitname[i]);
        }
    }

答案 2 :(得分:1)

你可以使用trim()来省略旧金山的空间,

更改

 String[] value = namelist.get(i).split("\\s*,\\s*");

 String[] value = namelist.get(i).trim().split("\\s*,\\s*");