是否可以確定字符串str1="ABCDEFGHIJKLMNOP"
是否包含字符串模式strptrn="gHi"
?我想知道,如果字符不區分大小寫,這是否可能。如果是這樣,怎麼樣?字符串包含 - 忽略大小寫
回答
您可以使用
org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
CharSequence searchStr);
檢查是否爲CharSequence包含搜索CharSequenc不管 的情況如何,處理null。不區分大小寫由 String.equalsIgnoreCase(String)定義。
null CharSequence將返回false。
這將比正則表達式更好在性能方面,正則表達式總是很昂貴。
對於官方的文檔,請參閱:StringUtils.containsIgnoreCase
更新:
如果你是那些中誰
- 不想使用Apache公共圖書館
- 唐不想用昂貴的基於
regex/Pattern
的解決方案, - 不想使用
toLowerCase
創建額外的字符串對象,
您可以使用java.lang.String.regionMatches
public boolean regionMatches(boolean ignoreCase,
int toffset,
String other,
int ooffset,
int len)
ignoreCase
實現自己的自定義containsIgnoreCase
:如果屬實,比較字符時忽略大小寫。
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;
}
謝謝。還有很多其他好東西,比如indexOfIgnoreCase ... – vikingsteve
該方法假設乾草堆的匹配部分的長度與針的長度相同,爲UTF-16代碼單元的數量。因此,如果您搜索「ß」並且字符串包含「SS」,它將不會找到匹配項,即使這兩個字符串相同(如果您忽略大小寫)(在德語語言環境中,當然,您必須) – Trejkaz
org.apache.commons.lang3.StringUtils此包在android –
您可以使用java.util.regex.Pattern中與CASE_INSENSITIVE標誌不區分大小寫的匹配:
Pattern.compile(Pattern.quote(strptrn), Pattern.CASE_INSENSITIVE).matcher(str1).find();
看看以前的答案@SamStephens寫道http://stackoverflow.com/a/6996550/372926:您必須同時指定CASE_INSENSITIVE和UNICODE_CASE,並且仍然不會獲得正確的值,因爲雖然Java使用完整的casemapping,它只使用簡單的錶殼。這是個問題。「 – Vini
如果你不會用正則表達式去:
"ABCDEFGHIJKLMNOP".toLowerCase().contains("gHi".toLowerCase())
雖然這可能是一個答案,但我不認爲這是一個很好的解決方案,大'字符串' –
這不適用於廣泛的unicode世界 - 請參閱http://stackoverflow.com/a/6996550/ 372926 – SamStephens
類似'如果(file.getName()。toLowerCase() \t \t \t \t \t \t。載有(editText.getText()。的toString()。toLowerCase()))' –
試試這個
public static void main(String[] args)
{
String original = "ABCDEFGHIJKLMNOPQ";
String tobeChecked = "GHi";
System.out.println(containsString(original, tobeChecked, true));
System.out.println(containsString(original, tobeChecked, false));
}
public static boolean containsString(String original, String tobeChecked, boolean caseSensitive)
{
if (caseSensitive)
{
return original.contains(tobeChecked);
}
else
{
return original.toLowerCase().contains(tobeChecked.toLowerCase());
}
}
中不可用如果希望以區分大小寫的方式檢查值並在需要時傳遞false,則傳遞true作爲第三個參數值以不區分大小寫的方式進行檢查。 –
優化的伊姆蘭塔裏克的版本
Pattern.compile(strptrn, Pattern.CASE_INSENSITIVE + Pattern.LITERAL).matcher(str1).find();
Pattern.quote(strptrn)總是返回 「\ Q」 + S + 「\ E」 即使有沒有什麼可以引用,連接破壞性能。
您應該使用按位|運算符而不是加法運算符。 –
- 1. 斷言字符串列表包含忽略大小寫的字符串
- 2. 比較字符串忽略大小寫
- 3. 忽略大小寫的「包含」在Java
- 4. 驗證的Mockito參數包含另一個字符串忽略大小寫
- 5. TSQL比較字符串/變種而忽略大小寫/大寫?
- 6. 忽略大小寫difflib.get_close_matches()
- 7. 如何字符串中的字符,忽略大小寫?
- 8. 替換忽略大小寫
- 9. 忽略大小寫validate_exclusion
- 10. Haxe - 比較兩個字符串忽略大小寫?
- 11. javascript:忽略字符串的大小寫敏感
- 12. 對字符串數組進行排序並忽略大小寫
- 13. 使用字符串#end_with?()但忽略大小寫
- 14. C#字符串比較忽略區分大小寫HTML標記
- 15. ruby字符串匹配忽略大小寫
- 16. 比較兩個字符串變量忽略大小寫
- 17. 獲取子字符串位置忽略區分大小寫
- 18. 確保兩個字符串不相等並忽略大小寫
- 19. 在排序字符串時不要忽略大小寫
- 20. 忽略dplyr包中的大小寫
- 21. 搜索字符串中的字符串(但忽略大寫)
- 22. 如何匹配忽略大小寫的字符串中的子字符串?
- 23. LFTP MGET忽略大小寫
- 24. 忽略區分大小寫
- 25. 如何使Class.forName忽略小寫/大寫
- 26. 忽略大小寫與__startswith
- 27. 忽略大小寫boost :: regexp
- 28. 忽略字符串中的大小寫,標點符號和空白字符
- 29. 如何知道一個對象包含在忽略大小寫
- 30. 用apache忽略大小寫
使用toUpperCase()? – Ravi