判断字符串是否是乱码

判断字符串是否含有乱码

思路

先去除字符串中的空格、制表符、换行、回车符,然后去除字符串中的标点符号、之后判断是否是数字或者英文字母、判断是否是中日韩文字。如果既不是数字或英文字母或中日韩文字,则判断其为乱码。否则判断其不是乱码。

代码

/**
 * 判断是否是中日韩文字
 * @param c     要判断的字符
 * @return      true或false
 */
private static boolean isChinese(char c) {
    Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
    if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
            || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
            || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
            || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
            || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
            || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
        return true;
    }
    return false;
}


/**
 * 判断是否是数字或者是英文字母
 * @param c
 * @return
 */
public static boolean judge(char c){
    if((c >='0' && c<='9')||(c >='a' && c<='z' ||  c >='A' && c<='Z')){
        return true;
    }
    return false;
}
public static boolean isMessyCode(String strName) {
    //去除字符串中的空格 制表符 换行 回车
    Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
    Matcher m = p.matcher(strName);
    String after = m.replaceAll("");
    //去除字符串中的标点符号
    String temp = after.replaceAll("\\p{P}", "");
    //处理之后转换成字符数组
    char[] ch = temp.trim().toCharArray();
    for (int i = 0; i < ch.length; i++) {
        char c = ch[i];
        //判断是否是数字或者英文字符
        if (!judge(c)) {
            //判断是否是中日韩文
            if (!isChinese(c)) {
                //如果不是数字或者英文字符也不是中日韩文则表示是乱码返回true
                return true;
            }
        }
    }
    //表示不是乱码 返回false
    return false;
}

你可能感兴趣的:(Android)