Java 代码判断某个字符串或字符为中文的方法总结 [\u4e00-\u9fa5] 和 [\u4E00-\u9FFF] 的汉字范围由什么区别?
·
在Java中判断字符串或字符是否为中文,可以使用以下几种方法:
1. 使用Unicode范围判断
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS;
}
public static boolean isChinese(String str) {
if (str == null || str.length() == 0) {
return false;
}
for (int i = 0; i < str.length(); i++) {
if (!isChinese(str.charAt(i))) {
return false;
}
}
return true;
}
2. 使用正则表达式判断
public static boolean isChinese(String str) {
String regex = "[\\u4e00-\\u9fff]+";
return str.matches(regex);
}
// 或者更完整的中文字符检测
public static boolean containsChinese(String str) {
String regex = ".*[\\u4e00-\\u9fff\\uf900-\\ufa2d]+.*";
return str.matches(regex);
}
3. 使用Character类的方法
public static boolean isChinese(char c) {
return Character.isIdeographic(c);
}
public static boolean isChineseBlock(char c) {
return (c >= 0x4e00 && c <= 0x9fff) ||
(c >= 0xf900 && c <= 0xfaff);
}
4. 实际应用示例
public class ChineseDetector {
// 检查字符串是否全为中文
public static boolean isAllChinese(String str) {
if (str == null || str.trim().isEmpty()) {
return false;
}
return str.matches("[\\u4e00-\\u9fff\\uf900-\\ufa2d]+");
}
// 检查字符串是否包含中文
public static boolean containsChinese(String str) {
if (str == null || str.isEmpty()) {
return false;
}
for (char c : str.toCharArray()) {
if (isChineseChar(c)) {
return true;
}
}
return false;
}
// 判断单个字符是否为中文
private static boolean isChineseChar(char c) {
return (c >= 0x4e00 && c <= 0x9fff) ||
(c >= 0xf900 && c <= 0xfaff);
}
}
推荐使用第1种或第4种方法,因为它们能够更准确地识别各种中文字符块,包括扩展区域的汉字。
注意:以上内容由AI大模型生成,注意识别!
扩展、[\u4e00-\u9fa5] 和 [\u4E00-\u9FFF] 的汉字范围由什么区别?
Unicode汉字范围区别
\u4e00-\u9fa5 范围
- 起始字符:
一(U+4E00) - 结束字符:
龥(U+9FA5) - 字符数量: 20902个字符
- 标准来源: 基于早期Unicode标准定义的CJK统一汉字范围
\u4E00-\u9FFF 范围
- 起始字符:
一(U+4E00) - 结束字符:
鿿(U+9FFF) - 字符数量: 24576个字符
- 标准扩展: 包含了更多现代Unicode标准中定义的汉字
主要差异
-
范围大小
[\u4E00-\u9FFF]比[\u4e00-\u9fa5]多出约3674个字符
-
字符覆盖
[\u4e00-\u9fa5]是传统CJK汉字的核心区域[\u4E00-\u9FFF]包含了扩展的汉字字符,如少数民族文字、古文字等
-
实际应用
- 现代项目建议使用
[\u4E00-\u9FFF]以获得更完整的汉字支持 - 两者都可用于中文字符检测,但后者覆盖面更广
- 现代项目建议使用
更多推荐
所有评论(0)