在 android 中使用 Arraylist 搜索字符串

Search String with Arraylist in android

在我的 android 应用程序中,我尝试将字符串与数组列表进行比较,查看下面的代码

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]);
            }
        }

它returns正确输出

chennai 
mumbai

但无法获得旧金山的价值,因为白色 space,我完全震惊了,即使我使用了模式和匹配但无法处理白色 space

有人可以帮忙吗??

您可以在 String name.

中查找 withoutcomma 数组的值,而不是按白色 space 拆分
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)

您可以使用 trim() 省略旧金山的 space,

改变

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

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

用逗号和空格分开单词。所以,当你得到一个多单词的地名时,把它存储在数组中,然后用它来比较。适合我。

使用这个:

    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]);
        }
    }