使用Java如何检测String是否包含中文字符?
String chineseStr = "已下架" ;
if (isChineseString(chineseStr)) {
System.out.println("The string contains Chinese characters");
}else{
System.out.println("The string contains Chinese characters");
}
你能帮我解决一下这个问题吗?
答案 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 API或Language Detection API
语言检测API包含简单的演示。你可以先试试。
答案 2 :(得分:1)
更直接的方法:
if ("粽子".matches("[\\u4E00-\\u9FA5]+")) {
System.out.println("is Chinese");
}
如果您还需要捕获很少使用和稀有字符,那么您需要添加所有范围:What's the complete range for Chinese characters in Unicode?