java模糊比較兩個字符串是否相等,忽略符號,忽略大小寫,忽略全角與半角

java模糊比較兩個字符串對象是否相等,忽略符號,忽略大小寫,忽略全角與半角。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;
}
相關文章
相關標籤/搜索