这里采用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;
}