1. ホーム
  2. java

[解決済み] ある文字列が配列のいずれかの文字列を含むかどうかをテストする

2022-04-21 15:33:27

質問

ある文字列が配列のいずれかの文字列を含むかどうかをテストするにはどうすればよいですか?

を使う代わりに

if (string.contains(item1) || string.contains(item2) || string.contains(item3))

解決方法は?

EDIT: Java 8 Streaming APIを使用したアップデートを紹介します。とてもすっきりしています。正規表現との組み合わせも可能です。

public static boolean stringContainsItemFromList(String inputStr, String[] items) {
    return Arrays.stream(items).anyMatch(inputStr::contains);
}

また、入力タイプを配列ではなくリストに変更すると items.stream().anyMatch(inputStr::contains) .

を使用することもできます。 .filter(inputStr::contains).findAny() 一致する文字列を返したい場合。

重要です。 を使用すると、上記のコードを実行することができます。 parallelStream() しかし、ほとんどの場合、これは実際にはパフォーマンスの妨げになります。参照 並列ストリーミングの詳細については、この質問を参照してください。 .


オリジナルの少し古い回答です。

以下は、(VERY BASICな)静的メソッドです。比較文字列で大文字と小文字を区別することに注意してください。A プリミティブ 大文字と小文字を区別しないようにする方法は toLowerCase() または toUpperCase() を入力文字列とテスト文字列の両方で使用します。

これより複雑なことをする必要がある場合は、次のようにします。 パターン マッチャー クラスを作成し、いくつかの正規表現の方法を学びました。それらを理解したら、それらのクラスや String.matches() ヘルパーメソッド

public static boolean stringContainsItemFromList(String inputStr, String[] items)
{
    for(int i =0; i < items.length; i++)
    {
        if(inputStr.contains(items[i]))
        {
            return true;
        }
    }
    return false;
}