java - स्ट्रिंग में शामिल हैं-मामले को अनदेखा करें




string contains (4)

क्या यह निर्धारित करना संभव है कि एक स्ट्रिंग str1="ABCDEFGHIJKLMNOP" में एक स्ट्रिंग पैटर्न strptrn="gHi" ? मैं जानना चाहता था कि क्या यह संभव है जब पात्र केस असंवेदनशील हों। यदि हां, तो कैसे?


आप असंवेदनशील मिलान के मामले में CAASE_INSENSITIVE ध्वज के साथ java.util.regex.Pattern का उपयोग कर सकते हैं:

Pattern.compile(Pattern.quote(strptrn), Pattern.CASE_INSENSITIVE).matcher(str1).find();

आप उपयोग कर सकते हैं

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

चेक करता है कि क्या CharSequence में केस के बावजूद CharSequence खोज है, शून्य को संभालना। केस-असंवेदनशीलता को स्ट्रिंग.equalsIgnoreCase (स्ट्रिंग) द्वारा परिभाषित किया गया है।

एक शून्य CharSequence झूठी वापसी होगी।

यह रेगेक्स से बेहतर होगा क्योंकि प्रदर्शन के संदर्भ में रेगेक्स हमेशा महंगा होता है

आधिकारिक दस्तावेज़ के लिए, देखें: StringUtils.containsIgnoreCase

अद्यतन करें :

यदि आप उन लोगों में से हैं जो

  • अपाचे कॉमन्स लाइब्रेरी का उपयोग नहीं करना चाहते हैं
  • महंगा regex/Pattern आधारित समाधानों के साथ नहीं जाना चाहते हैं,
  • toLowerCase का उपयोग करके अतिरिक्त स्ट्रिंग ऑब्जेक्ट बनाना नहीं चाहते हैं,

आप java.lang.String.regionMatches का उपयोग कर अपने स्वयं के कस्टम java.lang.String.regionMatches को कार्यान्वित कर सकते java.lang.String.regionMatches

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

ignoreCase : यदि सत्य है, वर्णों की तुलना करते समय मामले को अनदेखा करता है।

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

एक अनुकूलित इमरान तारिक के संस्करण

Pattern.compile(strptrn, Pattern.CASE_INSENSITIVE + Pattern.LITERAL).matcher(str1).find();

Pattern.quote (strptrn) हमेशा "\ Q" + s + "\ E" लौटाता है भले ही उद्धरण के लिए कुछ भी नहीं है, संगतता खराब प्रदर्शन।


यदि आप रेगेक्स के साथ नहीं जाएंगे:

"ABCDEFGHIJKLMNOP".toLowerCase().contains("gHi".toLowerCase())





case-insensitive