在我的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的价值,因为空白区域,我完全被击中,即使我使用了模式和匹配但无法处理空白区域
有人可以帮忙吗??
答案 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*");