gpt4 book ai didi

java - 改进数组搜索

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:02 24 4
gpt4 key购买 nike

我是 Android 和 Java 的新手,所以请多关照 :)

我的应用程序中有一个 EditText,用于在 String[] 中搜索特定字符串

我的代码运行良好,但不是我想要的:

ArrayList<String> allProd = new ArrayList<String>;
ArrayList<String> allProd_sort = new ArrayList<String>;

allProd = [the table is brown, the cat is red, the dog is white];

String[] allProdString = allProd.toArray(new String[allProd.size()]);

...

//inputSearch is the EditText
inputSearch.addTextChangeListener (new TextWatcher() {

...

@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

int textLength = inputSearch.getText().length();
String text = inputSearch.getText().toString();

for (int y = 0; y< allProdString.length; y++) {

//in my case i want that the search start when there are min 3 characters in inputSearch
if(textLength <= allProdString[y].length() && textLength >=3) {

if (Pattern.compile(Pattern.quote(text), Pattern.CASE_INSENSITIVE)
.matcher(allProdString[y]).find()) {

allProd_sort.add(allProdString[y]);

}

}
}

}

});

此代码产生这些结果:

如果我搜索“table is”=> allProd_sort 将是[the table is brown]

但是如果我搜索“table brown”=> allProd_sort 将是空的,但我想要[the table is brown]

我该如何改进?

谢谢大家

最佳答案

你需要改变模式。目前,字符串需要准确包含您输入的内容。如果您输入“table.*brown”而不是空格,它将匹配。

您可以让用户输入正则表达式,或者您可以自己做一个简化的事情,在使用它进行匹配之前将查询字符串中的所有空格替换为“.*”。

您可以在此处阅读有关正则表达式的所有信息:http://docs.oracle.com/javase/tutorial/essential/regex/

关于java - 改进数组搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21432001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com