是否可以确定字符串 str1="ABCDEFGHIJKLMNOP"
是否包含字符串模式 strptrn="gHi"
?我想知道当字符不区分大小写时这是否可能。如果有,怎么做?
最佳答案
你可以使用
org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
CharSequence searchStr);
Checks if CharSequence contains a search CharSequence irrespective of case, handling null. Case-insensitivity is defined as by String.equalsIgnoreCase(String).
A null CharSequence will return false.
这个会比正则表达式更好,因为正则表达式在性能方面总是很昂贵。
官方文档引用:StringUtils.containsIgnoreCase
更新:
如果你是其中的一员
- 不想使用 Apache 公共(public)库
- 不想使用昂贵的基于
regex/Pattern
的解决方案, - 不想使用
toLowerCase
创建额外的字符串对象,
您可以使用 java.lang.String.regionMatches 实现您自己的自定义 containsIgnoreCase
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;
}
关于java - 字符串包含 - 忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018478/