字符串包含 - 忽略大小写
2022-08-31 06:37:35
是否可以确定字符串是否包含字符串模式?我想知道当角色不区分大小写时,这是否可能。如果是这样,如何?str1="ABCDEFGHIJKLMNOP"
strptrn="gHi"
是否可以确定字符串是否包含字符串模式?我想知道当角色不区分大小写时,这是否可能。如果是这样,如何?str1="ABCDEFGHIJKLMNOP"
strptrn="gHi"
您可以使用
org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
CharSequence searchStr);
检查字符序列是否包含搜索字符序列而不考虑大小写,处理 null。不区分大小写由 String.equalsIgnoreCase(String) 定义。
空字符序列将返回 false。
这个将比正则表达式更好,因为正则表达式在性能方面总是昂贵的。
有关官方文档,请参阅:StringUtils.containsIgnoreCase
更新:
如果你是那些
regex/Pattern
toLowerCase
您可以使用java.lang.String.regionMatches实现自己的自定义containsIgnoreCase
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;
}
如果您不使用正则表达式:
"ABCDEFGHIJKLMNOP".toLowerCase().contains("gHi".toLowerCase())