簡體   English   中英

在短語上使用字符串 startsWith

[英]Use string startsWith on phrase

我創建了一個自動完成功能,它應該在用戶被startsWith過濾后向用戶顯示結果。

例如,如果用戶搜索“harry potter”,我希望它返回以“harry potter”開頭的結果,但我得到的所有結果都以“harry”開頭,就像單詞之間的空格打斷了短語一樣。

如何將startsWith與 2 個單詞的字符串一起使用?

我用:

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

我做了一個簡單的 Main java class 看起來你的代碼正在運行:

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);

}

Output:

  1. 哈利·波特:Adfg
  2. 哈利·波特:SDFSDF
  3. 哈利波特很棒

也許主要問題在於您的項目和查詢中的 startWith 的比較。

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);
    }
}   

我運行了這段代碼。 它工作正常。 output是【Harry potter is ossm, Harry potter is Great】。 也許query.toLowerCase()有一些問題。 看看它返回了什么。 你會發現問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM