java中文字符_Java 完美判断中文字符
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,。等等是不能识别的。
以下是比较完善的判断方法:CharUtil.java
http://www.micmiu.com/lang/java/java-check-chinese/
import java.util.regex.Pattern;
public class CharUtil {
public static void main(String[] args) {
String[] strArr = new String[] { "www.micmiu.com", "!@#$%^&*()_+{}[]|\"'?/:;<>,.", "!¥……()——:;“”‘’《》,。?、", "不要啊", "やめて", "韩佳人", "???" };
for (String str : strArr) {
System.out.println("===========> 测试字符串:" + str);
System.out.println("正则判断结果:" + isChineseByREG(str) + " -- " + isChineseByName(str));
System.out.println("Unicode判断结果 :" + isChinese(str));
System.out.println("详细判断列表:");
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
System.out.println(c + " --> " + (isChinese(c) ? "是" : "否"));
}
}
}
// 根据Unicode编码完美的判断中文汉字和符号
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
return true;
}
return false;
}
// 完整的判断中文汉字和符号
public static boolean isChinese(String strName) {
char[] ch = strName.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
return true;
}
}
return false;
}
// 只能判断部分CJK字符(CJK统一汉字)
public static boolean isChineseByREG(String str) {
if (str == null) {
return false;
}
Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");
return pattern.matcher(str.trim()).find();
}
// 只能判断部分CJK字符(CJK统一汉字)
public static boolean isChineseByName(String str) {
if (str == null) {
return false;
}
// 大小写不同:\\p 表示包含,\\P 表示不包含
// \\p{Cn} 的意思为 Unicode 中未被定义字符的编码,\\P{Cn} 就表示 Unicode中已经被定义字符的编码
String reg = "\\p{InCJK Unified Ideographs}&&\\P{Cn}";
Pattern pattern = Pattern.compile(reg);
return pattern.matcher(str.trim()).find();
}
}
java中文字符_Java 完美判断中文字符相关推荐
- java识别中文_Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码正则来做判断,但是其实这个区间来判断中文不是非常精确,以下是比较完善的判断方法 Java判断一个字符串是否有中文一般情况是利用Unico ...
- C语言 输入一个字符,并判断这个字符属于哪一类字符
C语言 输入一个字符,并判断这个字符属于哪一类字符. #include<stdio.h> int main () {char ch;ch = getchar();putchar(ch);i ...
- C语言程序练习题:从键盘任意输入一个字符,编程判断该字符是数字字符、英文字母、空格还是其他字符。
从键盘任意输入一个字符, 编程判断该字符是数字字符.英文字母.空格还是其他字符. **输入格式要求:提示信息:"Press a key and then press Enter:" ...
- java 判断 中文字符_java中判断字符串中是否有中文字符
package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...
- Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- Java 完美判断中文字符
原创文章,转载请注明: 转载自micmiu – 大大的技术 | 小小的生活[ http://www.micmiu.com/ ] 本文链接地址: http://www.micmiu.com/lang/j ...
- Java如何校验中文乱码_java如何判断是否中文乱码
中文乱码在项目中是经常会遇到的情况.当我们通过设置request和response字符集,但是还是出现中文乱码的时候,今天给介绍一种通过java方法实现判断string是否为乱码的方法./** * 判 ...
- java 数据流对比_Java IO流之字符流字节流区别
java IO流主要是对字符字节的操作,企业应用比较广泛,比如最常见的导入导出.... 一.IO流的分类: 1.根据处理数据类型的不同分为:字符流(Reader,Writer)和字节流(InputSt ...
- java 全角_java 全角半角字符转换的方法实例
这篇文章主要介绍了java 全角半角字符转换的方法,大家参考使用吧 如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 可以通过下面的程序看看Java中所有字符以及对 ...
最新文章
- 数字图像处理:(5)非微分算子在数字图像处理中的应用
- 超年轻!93年小伙已是985大学教授、博导!
- python 语义网络_从Python代码到APP,你只需要一个小工具:GitHub已超3000星
- 181920.net用 文字存档
- How to download ABAP development Tool from Fiori Launchpad
- Lua 学习笔记(一)
- Kibana linux下安装
- java上三角数组_二维数组的三角填充 两种java实现的方法
- Java JDBC spring-jdbc
- 数据密集型应用系统设计--数据存储与检索
- Docker容器服务发现方案
- Keycloak服务器安装和配置
- 【软件相关】EPlan Electric P8 v2.7EPlan Harness ProD v2.7(新方法!)
- wifi6无线网卡驱动linux,ROG R6E Omega换wifi 6无线网卡教程
- nginx实现rtmp,flv,mp4流媒体服务器
- java lr0分析,LR0分析器实验报告.doc
- flash 嵌入html代码,flash嵌入html在html网页代码中嵌入Flash文件的解决方案(下).doc...
- SpringCloud02Nacos Discovery--服务治理
- 亚信科技前端实习面试题
- 易基因|一种全新的检测DNA羟甲基化的技术:ACE-Seq