java模糊比较两个字符串对象是否相等,忽略符号,忽略大小写,忽略全角与半角。
/**
* @param obj1
* @param obj2
* @return
*/
public boolean isEquals(Object obj1, Object obj2) {
if (obj1 == null || obj2 == null) {
return false;
}
String str1 = (String) obj1;
String str2 = (String) obj2;
if (str1.equalsIgnoreCase(str2)) {
return true;
} else {
String s1 = str1.replaceAll("\\pP", "");
String s2 = str2.replaceAll("\\pP", "");
if (s1.equalsIgnoreCase(s2)) {
return true;
} else {
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
for (int i = 0; i < chars1.length; i++) {
if (chars1[i] == '\u3000') {
chars1[i] = ' ';
} else if (chars1[i] > '\uFF00' && chars1[i] < '\uFF5F') {
chars1[i] = (char) (chars1[i] - 65248);
}
}
for (int i = 0; i < chars2.length; i++) {
if (chars2[i] == '\u3000') {
chars2[i] = ' ';
} else if (chars2[i] > '\uFF00' && chars2[i] < '\uFF5F') {
chars2[i] = (char) (chars2[i] - 65248);
}
}
s1 = new String(chars1);
s2 = new String(chars2);
if (s1.equalsIgnoreCase(s2)) {
return true;
}
}
}
return false;
}
补充:字符串中的全角半角转换方法
/**
* 半角转全角
*
* @param input String.
* @return 全角字符串.
*/
public static String ToSBC(String input) {
char c[] = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == ' ') {
c[i] = '\u3000';
} else if (c[i] < '\177') {
c[i] = (char) (c[i] + 65248);
}
}
return new String(c);
}
/**
* 全角转半角
*
* @param input String.
* @return 半角字符串
*/
public static String ToDBC(String input) {
char c[] = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\u3000') {
c[i] = ' ';
} else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
c[i] = (char) (c[i] - 65248);
}
}
String returnString = new String(c);
return returnString;
}