使用字符串startswith on短语

zhte4eai  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(352)

我创建了一个autocomplete,它应该在用户经过筛选后显示结果 startsWith .
例如,如果用户搜索“哈利波特”,我希望返回以“哈利波特”开头的结果,但我得到的所有结果都以“哈利”开头,就像单词之间的空格打断了短语一样。
我怎么用 startsWith 用两个字的字符串?
我使用:

for (String item : autoBookNames) {
    if (item.toLowerCase().startsWith( query.toLowerCase() )) {
        filteredTitles.add( item );
    }
}
k5ifujac

k5ifujac1#

import java.util.ArrayList;

public class JavaPractice {

    public static void main(String[] argh){
        String[] autoBookNames = {
            "Harry potter is ossm",
            "Harry potter is Great",
            "Harry",
            "Joe"
        };
        ArrayList<String> filteredTitles = new ArrayList<String>(5);
        for (String item : autoBookNames) {
            if (item.toLowerCase().startsWith( "harry potter" )) {
                filteredTitles.add( item );
            }
        }
        System.out.println(filteredTitles);
    }
}

我运行了这个代码。很好用。输出是[哈利波特是奥塞姆,哈利波特是伟大的]。可能是你的问题 query.toLowerCase() . 看看它回来了。你会发现问题的。

rnmwe5a2

rnmwe5a22#

我制作了一个简单的主java类,看起来您的代码正在运行:

public static void main(String[] args){
    String query = "Harry Potter";

    List<String> filteredTitles = new ArrayList<>();
    List<String> autoBookNames = new ArrayList<>();
    autoBookNames.add("Harry potter: Adfg");
    autoBookNames.add("Harry Potter: SDFSDF");
    autoBookNames.add("Not harry potter title");
    autoBookNames.add("Harry potter is awesome");
    autoBookNames.add("Narnia is better than Harry Potter");
    autoBookNames.add("Lord of Rings");

    for (String item : autoBookNames) {
        if (item.toLowerCase().startsWith( query.toLowerCase() )) {
            filteredTitles.add( item );
        }
    }

    filteredTitles.forEach(System.out::println);

}

输出:
哈利波特:adfg
哈利波特:sdfsdf
哈利波特真棒
可能主要的问题在于比较项目和查询中的startwith。

相关问题