1
static void seaArray()
    {
        String searchTerm = key.nextLine();

        for (int i = 0; i < name.size(); i++)
        {
            if (name.get(i).toLowerCase().indexOf(searchTerm.toLowerCase(), i) != -1)
            {
                printLn(name.get(i));
            }
            else
            {
                printLn("nope");
            }
        }


        promptCommand();
    }

ユーザーが文字で入力した名前を検索できるようにしようとしています。私はほとんどのバグを解決しましたが、大文字と小文字を気にせずに実行できるようにしたいと考えています。この問題を検索し、提供された指示に従いましたが、大文字と小文字が区別されます。

誰か手伝ってくれませんか?

詳細: name は私が arraylist と呼んでいるものです。ご意見をお寄せいただきありがとうございます。機会があれば、すべてのソリューションを試してみてください。

4

4 に答える 4

1

equalsIgnoreCase()の代わりに使用equals()

于 2012-10-04T17:37:35.177 に答える
1

String#contains小文字で使用します。

for(String nm:name){
    if(nm.toLowerCase().contains(searchTerm.toLowerCase()))
        printLn(name.get(i));
    else
        printLn("nope");
}
于 2012-10-04T17:39:17.097 に答える
1

java.lang.Stringは、次のメソッドを提供しequalsIgnoreCaseます。

for(String str : name) {
    if(str.equalsIgnoreCase(searchTerm)) {
        ....
    } else {
        ....
    }
}
于 2012-10-04T17:35:19.520 に答える
1

使ってみてCollections.binarySearch(name, searchTerm, String.CASE_INSENSITIVE_ORDER)

name(?の部分文字列を探している場合を除きますsearchTerm)

于 2012-10-04T17:35:41.900 に答える