Java判断一个字符串是否有中文
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,。等等是不能识别的。
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();} }
输出:
===========> 测试字符串:www.micmiu.com 正则判断结果:false -- false Unicode判断结果 :false 详细判断列表: w --> 否 w --> 否 w --> 否 . --> 否 m --> 否 i --> 否 c --> 否 m --> 否 i --> 否 u --> 否 . --> 否 c --> 否 o --> 否 m --> 否 ===========> 测试字符串:!@#$%^&*()_+{}[]|"'?/:;<>,. 正则判断结果:false -- false Unicode判断结果 :false 详细判断列表: ! --> 否 @ --> 否 # --> 否 $ --> 否 % --> 否 ^ --> 否 & --> 否 * --> 否 ( --> 否 ) --> 否 _ --> 否 + --> 否 { --> 否 } --> 否 [ --> 否 ] --> 否 | --> 否 " --> 否 ' --> 否 ? --> 否 / --> 否 : --> 否 ; --> 否 < --> 否 > --> 否 , --> 否 . --> 否 ===========> 测试字符串:!¥……()——:;“”‘’《》,。?、 正则判断结果:false -- false Unicode判断结果 :true 详细判断列表: ! --> 是 ¥ --> 是 … --> 是 … --> 是 ( --> 是 ) --> 是 — --> 是 — --> 是 : --> 是 ; --> 是 “ --> 是 ” --> 是 ‘ --> 是 ’ --> 是 《 --> 是 》 --> 是 , --> 是 。 --> 是 ? --> 是 、 --> 是 ===========> 测试字符串:不要啊 正则判断结果:true -- false Unicode判断结果 :true 详细判断列表: 不 --> 是 要 --> 是 啊 --> 是 ===========> 测试字符串:やめて 正则判断结果:false -- false Unicode判断结果 :false 详细判断列表: や --> 否 め --> 否 て --> 否 ===========> 测试字符串:韩佳人 正则判断结果:true -- false Unicode判断结果 :true 详细判断列表: 韩 --> 是 佳 --> 是 人 --> 是 ===========> 测试字符串:??? 正则判断结果:false -- false Unicode判断结果 :false 详细判断列表: ? --> 否 ? --> 否 ? --> 否
转载于:https://www.cnblogs.com/greamrod/p/9724865.html
Java判断一个字符串是否有中文相关推荐
- Java判断一个字符串中是否包含中文字符工具类
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含 要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法,如果indexOf方法返回大于等于0的值 ...
- java判断一个字符串是否是数字和字母_java判断字符串是否为数字或中文或字母...
1.判断字符串是否仅为数字: 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length( ...
- Java判断一个字符串是否包含某个字符
1 问题 如何利用Java通过不同的方法来判断一个字符串是否包含某个字符. 2 方法 .contains方法 这个是利用java.lang.String.contains() 方法返回true,当且仅 ...
- java判断一个字符串是否为空或空字符串(四种方法)
首先需要理解null和" "的区别: null表示这个字符串在栈中没有任何指向因此在堆中没有分配内存空间,如果要调用这个字符串会出现空指针异常 String str = null; ...
- java判断一个字符串对象是否在一个集合里面
最初遇到的这个小问题是,如何判断一个字符串是否在一个字符串数组里面? private static boolean isBelongList(String str){ String[] strArra ...
- java判断一个字符串是否为数字型(整数、小数、负数)
1.采用正则表达式的方式来判断一个字符串是否为数字,这种方式判断面比较全面,可以判断正负.整数小数 String str1="12354哈哈";String str2=" ...
- java判断一个字符串是否为需要的格式日期格式
Java为了支持多语言,没有固定的日期格式.你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式. .今天编写JSF程序,需要 ...
- java判断一个字符串是否为空,isEmpty和isBlank的区别
实际应用中,经常会用到判断字符串是否为空的逻辑 比较简单的就是用 Str != null && Str.length() >0 来判断 其实很多java工具集都是有包装好的接口可 ...
最新文章
- 表单标签form、label、input、textarea、select
- 【Java】剑指 Offer II 022. 链表中环的入口节点
- mysql子查询批量找id最大的
- Swift2.0语言教程之函数嵌套调用形式
- win7 无法复制粘贴
- 【PC工具】几个提高工作效率的工具素材网站,美化代码,精美图标,logo设计...
- 华为鸿蒙os系统有哪些黑科技,华为首款搭载鸿蒙os智慧产品除了鸿蒙系统还有这黑科技...
- java gui框架_推荐!程序员整理的Java资源大全
- Socket的3次握手链接与4次断开握手
- java和c++ 删除hash表的内容
- 一本内行人写给行内人的安全经典--全面揭秘曾经热炒一时的“入侵腾讯事件”...
- Vue 3 不再支持 IE 11!
- InternalError: Blas GEMM launch failed : a.shape=(100, 784), b.shape=(784, 10), m=100, n=10...问题解决办法
- 新安装 Ubuntu 12.10 需要做的 10 件事(转)
- Python连接SQLite
- math.js api static function
- MYSQL 数据库的常用语句
- 前端工作总结187-json校验工具
- 解决Chrome浏览器主页被篡改(劫持)hh899899.com的问题
- 增强型for循环与Map集合的遍历
热门文章
- centos8安装dm8,动态库加载成功后导致undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b fatal: Could not read
- win10任务栏固定图标消失
- sklearn实现lda模型_运用sklearn进行线性判别分析(LDA)代码实现
- 电脑一插U盘就蓝屏的原因分析
- magicui3.1系统能升到鸿蒙,来了!Magic UI3.1系统更新体验,你的手机在里面吗?
- 带赖子的麻将胡牌算法Java_带赖子的超高效麻将、跑胡子胡牌算法
- android中留言板功能,js 实现简易留言板功能
- IPD三级计划体系在汽车研发领域的实践
- “IT列国”之“狡兔三窟”--漫谈IT项目的风险管理
- 来了,最新微波通信系统频率使用规划调整即将施行!