是否可以确定字符串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. 忽略大小写的“包含”在Java
- 3. 验证的Mockito参数包含另一个字符串忽略大小写
- 4. TSQL比较字符串/变种而忽略大小写/大写?
- 5. 如何字符串中的字符,忽略大小写?
- 6. 忽略大小写difflib.get_close_matches()
- 7. 替换忽略大小写
- 8. 忽略大小写validate_exclusion
- 9. C#字符串比较忽略区分大小写HTML标记
- 10. Haxe - 比较两个字符串忽略大小写?
- 11. 对字符串数组进行排序并忽略大小写
- 12. 使用字符串#end_with?()但忽略大小写
- 13. javascript:忽略字符串的大小写敏感
- 14. 获取子字符串位置忽略区分大小写
- 15. 在排序字符串时不要忽略大小写
- 16. ruby字符串匹配忽略大小写
- 17. 比较两个字符串变量忽略大小写
- 18. 忽略dplyr包中的大小写
- 19. 如何匹配忽略大小写的字符串中的子字符串?
- 20. 忽略区分大小写
- 21. 忽略大小写与__startswith
- 22. 如何使Class.forName忽略小写/大写
- 23. 忽略大小写boost :: regexp
- 24. 忽略字符串中的大小写,标点符号和空白字符
- 25. 用apache忽略大小写
- 26. C#RegEx:忽略大小写模式?
- 27. 搜索忽略大小写敏感
- 28. LINQ忽略大小写
- 29. 忽略与BitBucket大小写
- 30. SOPT值忽略大小写
使用toUpperCase()? – Ravi