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判断一个字符串是否有中文相关推荐

  1. Java判断一个字符串中是否包含中文字符工具类

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  2. java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...

    java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含 要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法,如果indexOf方法返回大于等于0的值 ...

  3. java判断一个字符串是否是数字和字母_java判断字符串是否为数字或中文或字母...

    1.判断字符串是否仅为数字: 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length( ...

  4. Java判断一个字符串是否包含某个字符

    1 问题 如何利用Java通过不同的方法来判断一个字符串是否包含某个字符. 2 方法 .contains方法 这个是利用java.lang.String.contains() 方法返回true,当且仅 ...

  5. java判断一个字符串是否为空或空字符串(四种方法)

    首先需要理解null和" "的区别: null表示这个字符串在栈中没有任何指向因此在堆中没有分配内存空间,如果要调用这个字符串会出现空指针异常 String str = null; ...

  6. java判断一个字符串对象是否在一个集合里面

    最初遇到的这个小问题是,如何判断一个字符串是否在一个字符串数组里面? private static boolean isBelongList(String str){ String[] strArra ...

  7. java判断一个字符串是否为数字型(整数、小数、负数)

    1.采用正则表达式的方式来判断一个字符串是否为数字,这种方式判断面比较全面,可以判断正负.整数小数 String str1="12354哈哈";String str2=" ...

  8. java判断一个字符串是否为需要的格式日期格式

    Java为了支持多语言,没有固定的日期格式.你需要根据自己的需要指定日期格式,然后用DateFormat类或者SimpleDateFormat类来判断是否是正确的日期格式. .今天编写JSF程序,需要 ...

  9. java判断一个字符串是否为空,isEmpty和isBlank的区别

    实际应用中,经常会用到判断字符串是否为空的逻辑 比较简单的就是用 Str != null && Str.length() >0 来判断 其实很多java工具集都是有包装好的接口可 ...

最新文章

  1. 表单标签form、label、input、textarea、select
  2. 【Java】剑指 Offer II 022. 链表中环的入口节点
  3. mysql子查询批量找id最大的
  4. Swift2.0语言教程之函数嵌套调用形式
  5. win7 无法复制粘贴
  6. 【PC工具】几个提高工作效率的工具素材网站,美化代码,精美图标,logo设计...
  7. 华为鸿蒙os系统有哪些黑科技,华为首款搭载鸿蒙os智慧产品除了鸿蒙系统还有这黑科技...
  8. java gui框架_推荐!程序员整理的Java资源大全
  9. Socket的3次握手链接与4次断开握手
  10. java和c++ 删除hash表的内容
  11. 一本内行人写给行内人的安全经典--全面揭秘曾经热炒一时的“入侵腾讯事件”...
  12. Vue 3 不再支持 IE 11!
  13. InternalError: Blas GEMM launch failed : a.shape=(100, 784), b.shape=(784, 10), m=100, n=10...问题解决办法
  14. 新安装 Ubuntu 12.10 需要做的 10 件事(转)
  15. Python连接SQLite
  16. math.js api static function
  17. MYSQL 数据库的常用语句
  18. 前端工作总结187-json校验工具
  19. 解决Chrome浏览器主页被篡改(劫持)hh899899.com的问题
  20. 增强型for循环与Map集合的遍历

热门文章

  1. centos8安装dm8,动态库加载成功后导致undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b fatal: Could not read
  2. win10任务栏固定图标消失
  3. sklearn实现lda模型_运用sklearn进行线性判别分析(LDA)代码实现
  4. 电脑一插U盘就蓝屏的原因分析
  5. magicui3.1系统能升到鸿蒙,来了!Magic UI3.1系统更新体验,你的手机在里面吗?
  6. 带赖子的麻将胡牌算法Java_带赖子的超高效麻将、跑胡子胡牌算法
  7. android中留言板功能,js 实现简易留言板功能
  8. IPD三级计划体系在汽车研发领域的实践
  9. “IT列国”之“狡兔三窟”--漫谈IT项目的风险管理
  10. 来了,最新微波通信系统频率使用规划调整即将施行!