文字列に大文字と小文字を区別しない [重複] 質問する

文字列に大文字と小文字を区別しない [重複] 質問する

str1="ABCDEFGHIJKLMNOP"文字列に文字列パターンが含まれているかどうかを判断することは可能ですかstrptrn="gHi"? 文字の大文字と小文字を区別しない場合にそれが可能かどうかを知りたいです。可能であれば、どのようにすればよいですか?

ベストアンサー1

使用できます

org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
                                     CharSequence searchStr);

CharSequence に大文字と小文字を区別せず、null を処理して検索 CharSequence が含まれているかどうかを確認します。大文字と小文字を区別しないことは、String.equalsIgnoreCase(String) によって定義されます。

CharSequence が null の場合は false が返されます。

これは正規表現よりも優れているでしょう正規表現は常に高価であるパフォーマンスの面で。

公式ドキュメントについては以下を参照してください:StringUtils.containsIgnoreCase

アップデート :

もしあなたが

  • Apache Commonsライブラリを使いたくない
  • regex/Pattern高価なソリューションは使いたくない、
  • を使用して追加の文字列オブジェクトを作成したくない場合はtoLowerCase

独自のカスタムを実装することができcontainsIgnoreCaseますjava.lang.String.regionMatches

public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)

ignoreCase: true の場合、文字を比較するときに大文字と小文字を区別しません。

public static boolean containsIgnoreCase(String str, String searchStr)     {
    if(str == null || searchStr == null) return false;

    final int length = searchStr.length();
    if (length == 0)
        return true;

    for (int i = str.length() - length; i >= 0; i--) {
        if (str.regionMatches(true, i, searchStr, 0, length))
            return true;
    }
    return false;
}

おすすめ記事