在java中检测中文字符

时间:2014-10-14 10:00:00

标签: java unicode encoding utf-8

使用Java如何检测String是否包含中文字符?

    String chineseStr = "已下架" ;

if (isChineseString(chineseStr)) {
  System.out.println("The string contains Chinese characters");
}else{
  System.out.println("The string contains Chinese characters");
}

你能帮我解决一下这个问题吗?

3 个答案:

答案 0 :(得分:29)

现在Character.isIdeographic(int codepoint)会告诉代码点是CJKV(中文,日文,韩文和越南文)的表意文字。

更近的是使用Character.UnicodeScript.HAN。

所以:

System.out.println(containsHanScript("xxx已下架xxx"));

public static boolean containsHanScript(String s) {
    for (int i = 0; i < s.length(); ) {
        int codepoint = s.codePointAt(i);
        i += Character.charCount(codepoint);
        if (Character.UnicodeScript.of(codepoint) == Character.UnicodeScript.HAN) {
            return true;
        }
    }
    return false;
}

或者在java 8中:

public static boolean containsHanScript(String s) {
    return s.codePoints().anyMatch(
            codepoint ->
            Character.UnicodeScript.of(codepoint) == Character.UnicodeScript.HAN);
}

答案 1 :(得分:1)

您可以尝试使用Google APILanguage Detection API

语言检测API包含简单的演示。你可以先试试。

答案 2 :(得分:1)

更直接的方法:

if ("粽子".matches("[\\u4E00-\\u9FA5]+")) {
    System.out.println("is Chinese");
}

如果您还需要捕获很少使用和稀有字符,那么您需要添加所有范围:What's the complete range for Chinese characters in Unicode?