Java怎么判断字符串里是中文
时间: 2024-09-12 18:07:43 浏览: 42
在Java中,判断字符串是否包含中文字符通常不是通过直接检查字符编码,因为中文字符也是Unicode的一部分,它们在ASCII字符集中并没有对应的值。相反,你可以采用以下几种方法:
1. 使用`Character`类的`isHighSurrogate()` 和 `isLowSurrogate()` 方法:中文字符由两个连续的“ surrogate pair”组成,可以检测这两个方法返回`true`的情况来判断。
```java
char[] chars = str.toCharArray();
for (char c : chars) {
if (Character.isHighSurrogate(c) && Character.isLowSurrogate(chars[chars.indexOf(c) + 1])) {
// 包含中文字符
}
}
```
2. 判断单个字符的Unicode值范围:汉字的Unicode值范围大致在`0x4E00`到`0x9FFF`之间(简体字)或`0x4E00`到`0x9FD5`、`0xF900`到`0xFAFF`、`0x20000`到`0x2A6DF`(繁体字)。你可以创建这个范围的集合,然后检查每个字符是否在这个范围内。
```java
private static final Set<Integer> chineseRange = new HashSet<>();
// 初始化中文字符范围
chineseRange.addAll(UnicodeBlock.of("CJK UNIFIED IDEOGRAPH-4E00-9FFF"));
// ...
public boolean containsChinese(String str) {
for (char c : str.toCharArray()) {
if (chineseRange.contains(Character.codePointAt(str, 0))) {
return true;
}
}
return false;
}
```
阅读全文