14

大文字と小文字を区別せずに、文字列に何かが含まれているかどうかを確認する方法はありますか?

例:(このコードは無効です。私の質問の基本を理解するためだけのものです)

String text = "I love ponies";

if(text.contains().equalsIgnoreCase("love") {
    // do something
}

編集:--------まだ機能していません

ああ、それは機能していないことがわかりました。これが私が使っているものです。(これはゲームの呪いフィルターです)

public void onChat(PlayerChatEvent event) {
    Player player = event.getPlayer(); 
    if (event.getMessage().contains("douche".toLowerCase()) || /* More words ... */) {
        event.setCancelled(true);
        player.sendMessage(ChatColor.GOLD + "[Midnight Blue] " + ChatColor.RED + "Please Don't Swear.");
    }
}

小文字では機能しますが、大文字では機能しません。

4

4 に答える 4

28
return text.toLowerCase().contains(s2.toLowerCase());

または別の方法は

Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(text).find();
于 2013-02-20T04:32:28.303 に答える
8

ApacheCommonsライブラリStringUtils#containsIgnoreCaseから使用すると簡単になります

サードパーティのライブラリを追加できない場合でも、無料で使用できるため、コードを使用できます。オンラインソースコードを確認してください。

テスト:

public class QuestionABCD {
    public static boolean containsIgnoreCase(String str, String searchStr) {
        if (str == null || searchStr == null) {
            return false;
        }
        int len = searchStr.length();
        int max = str.length() - len;
        for (int i = 0; i <= max; i++) {
            if (str.regionMatches(true, i, searchStr, 0, len)) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(containsIgnoreCase("abc", "A"));
        System.out.println(containsIgnoreCase("abc", "a"));
        System.out.println(containsIgnoreCase("abc", "B"));
        System.out.println(containsIgnoreCase("abc", "b"));
        System.out.println(containsIgnoreCase("abc", "z"));
        System.out.println(containsIgnoreCase("abc", "Z"));
    }
}

出力:

true
true
true
true
false
false
于 2013-02-20T04:41:43.370 に答える
7

大文字と小文字の区別が唯一の問題である場合は、すべてを小文字に変換してください

String text = "I love ponies";
String test = "LOVE";
if(text.toLowerCase().contains(test.toLowerCase()))
{
//your code
}

更新:あなたのコードの使用のために:

event.getMessage().toLowerCase().contains("douche".toLowerCase())

すべての条件で

于 2013-02-20T04:31:35.110 に答える
-8

このように2回確認できます

text.contains(s);
text.contains(s.toLowerCase());
于 2013-02-20T04:29:59.820 に答える