java模糊比较两个字符串是否相等,忽略符号,忽略大小写,忽略全角与半角

原创
2018/09/20 14:07
阅读数 835

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;
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部