Java 判断字符串是否包含汉字
在Java中,判断字符串是否包含汉字可以通过以下几种方法实现:

使用正则表达式
public boolean containsChinese(String str) {
return str.matches(".*[\u4e00-\u9fa5].*");
}
解释:
\u4e00-\u9fa5是Unicode中汉字的范围- 匹配任意字符(除换行符)零次或多次
- 整个正则表达式表示字符串中包含至少一个汉字
遍历字符检查Unicode范围
public boolean containsChinese(String str) {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= '\u4e00' && c <= '\u9fa5') {
return true;
}
}
return false;
}
使用Character类的方法
public boolean containsChinese(String str) {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isIdeographic(c)) {
return true;
}
}
return false;
}
使用Java 8的Stream API
public boolean containsChinese(String str) {
return str.chars().anyMatch(c -> c >= '\u4e00' && c <= '\u9fa5');
}
注意事项
- 这些方法只能判断基本的汉字范围,不包括扩展区的汉字(如
\u3400-\u4dbf、\u20000-\u2a6df等) - 如果需要判断所有汉字(包括扩展区),可以使用正则表达式:
.*[\u3400-\u4dbf\u4e00-\u9fa5\U00020000-\U0002a6df].* - 考虑性能时,方法二和方法三通常比正则表达式更高效
完整示例
public class ChineseChecker {
public static void main(String[] args) {
String test1 = "Hello 你好";
String test2 = "Hello World";
String test3 = "こんにちは"; // 日语
String test4 = "안녕하세요"; // 韩语
System.out.println(containsChinese(test1)); // true
System.out.println(containsChinese(test2)); // false
System.out.println(containsChinese(test3)); // false
System.out.println(containsChinese(test4)); // false
}
// 使用正则表达式的方法
public static boolean containsChinese(String str) {
return str.matches(".*[\u4e00-\u9fa5].*");
}
}
选择哪种方法取决于你的具体需求和性能考虑,对于简单的需求,正则表达式方法最简洁;对于性能敏感的场景,遍历字符的方法可能更合适。

