我是Android和Java的新手所以请你好:)
我的应用程序中有一个EditText,用于在String []中搜索特定的字符串
我的代码运行良好,但不是我想要的:
ArrayList
如果我搜索“table is”=> allProd_sort将[该表为棕色]
但如果我搜索“table brown”=> allProd_sort将为空但我想[表是棕色的]
我怎么能改善这个?
谢谢大家
最佳答案
好的 – 第一次优化:如果您的初始要求(Searchtext> = 3)为真,则只进入循环:
原文链接:https://www.f2er.com/android/431012.html@Override
public void onTextChanged(CharSequence charSequence,int i3) {
int textLength = inputSearch.getText().length();
if (textLength < 3) return;
String[] searchPattern = inputSearch.getText().toString().toLowerCase().split("\\s+");
for (int y = 0; y< allProdString.length; y++) {
if(textLength <= allProdString[y].length()) {
if (matchSearch(allProdString[y].toLowerCase(),searchPattern)) {
allProd_sort.add(allProdString[y]);
}
}
}
如果您只想匹配行,其中所有单词都包含在相同的序列中,您可以简单地创建一个正则表达式,如Tim B所说.
但是如果你还想匹配包含任何搜索词的字符串“brown table” – > [表是棕色的]然后你需要一个小循环:
public boolean matchSearch(String s,String[] searches) {
for (String search : searches) {
if (!s.contains(search) return false; // If the word is not in the string FALSE
}
return true; // If all words were found in the string,it is a match!
}
为了使这更清楚 – >棕色.*表只会匹配表格来自棕色的字符串……我认为你不能轻易创建一个有效的RegEx来检查每个单词在字符串中的任何位置是否至少有一次…