JAVA判断文本语种(中英日韩等)、去除字符串的空行换行以及标点符号等

这里采用ASCII码的方式来判断文本语种,这里列出中、英、日、韩 四种语种的判断

1、中文字符的判断

private static Set<UnicodeBlock> mChineseUnicodeBlocks = new HashSet<UnicodeBlock>() {{
        add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS);
        add(UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS);
        add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A);
        add(UnicodeBlock.GENERAL_PUNCTUATION);
        add(UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION);
        add(UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS);
    }};

/** 判断单个字符是否为中文 */
private static boolean isChineseChar(char c) {
        if(mChineseUnicodeBlocks.contains(UnicodeBlock.of(c))){
            return true;
        }
        return false;
    }

2、韩文字符的判断

/** 判断是否全部为韩文*/
private static boolean checkKoreaChar(String inputStr) {
        for (int i = 0; i < inputStr.length(); i++) {
            if (!((inputStr.charAt(i) > 0x3130 && inputStr.charAt(i) < 0x318F)
                    || (inputStr.charAt(i) >= 0xAC00 && inputStr.charAt(i) <= 0xD7A3))) {
                return false;
            }
        }
        return true;
    }

3、日文字符的判断

private static Set<UnicodeBlock> mJapaneseUnicodeBlocks = new HashSet<UnicodeBlock>() {{
        add(UnicodeBlock.HIRAGANA);
        add(UnicodeBlock.KATAKANA);
        add(UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS);
    }};
/** 判断单个字符是否为日文 */
private static boolean isJapaneseChar(char c) {
        if (mJapaneseUnicodeBlocks.contains(UnicodeBlock.of(c))) {
            return true;
        } else {
            return false;
        }
    }

4、英文字符的判断

    private static boolean checkEnglishChar(String inputStr) {
        //true:全文英文 false:反之
        return inputStr.matches("[a-zA-Z]+");
    }

以上即为中英日韩四种语言的判断,若需要判断一个字符串是否全为某种语言时,就必须对原字符串中的特殊字符、标点符号及数字、空行空字符等进行过滤,然后再用过滤后的字符串来判断语种。过滤字符串中特殊字符、标点符号及数字等的方法如下:

    /**
     * 去除标点符号
     * @param s
     * @return
     */
    private static String formatToRemoveSign(String inputStr) {
        String resultStr = inputStr.replaceAll("[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……& amp;*()——+|{}【】‘;:\"_”“’。,、?-]", "");
        return resultStr;
    }

    /** 去除数字*/
    private static String formatToRemoveNums(String inputStr){
        String resultStr =  inputStr.replaceAll("\\d+","").trim();
        return resultStr;
    }

    /** 去除空行,空字符*/
    private static String formatToRemoveBalnkLineAndSpace(String inputStr){
        if(TextUtils.isEmpty(input)){
            return "";
        }
        Pattern linePattern = Pattern.compile("\\s*|\t|\r|\n");
        String resultStr = linePattern.matcher(input).replaceAll("");
        return resultStr;
    }

猜你喜欢

转载自blog.csdn.net/kiddingboy_wjj/article/details/80623009
今日推荐