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