是否可以确定String是否str1="ABCDEFGHIJKLMNOP"包含字符串模式strptrn="gHi"?我想知道当字符不区分大小写时是否有可能。如果是这样,怎么办?
str1="ABCDEFGHIJKLMNOP"
strptrn="gHi"
您可以使用
org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str, CharSequence searchStr);
检查CharSequence是否包含搜索CharSequence(不区分大小写),处理为null。不区分大小写由String.equalsIgnoreCase(String)定义。 空的CharSequence将返回false。
检查CharSequence是否包含搜索CharSequence(不区分大小写),处理为null。不区分大小写由String.equalsIgnoreCase(String)定义。
空的CharSequence将返回false。
这将比regex更好,因为 regex 在性能方面 总是很昂贵 的。
有关官方文档,请参考:StringUtils.containsIgnoreCase
更新:
如果你是那些
regex/Pattern
toLowerCase
您可以containsIgnoreCase使用java.lang.String.regionMatches实现自己的自定义
containsIgnoreCase
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
ignoreCase :如果为true,则在比较字符时忽略大小写。
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; }