检测 Java 中的中文字符

2022-09-02 11:38:32

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

    String chineseStr = "已下架" ;

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

你能帮我解决问题吗?


答案 1

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

更接近的是使用Charact.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);
}

答案 2

更直接的方法:

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

如果您还需要捕获很少使用和外来字符,那么您需要添加所有范围:Unicode中中文字符的完整范围是多少?


推荐