【前言】

最近项目的短信服务对接外国的第三方发短信通道,第三方对短信内容有限制,不能含中文字符(如果含调用结果肯定失败),所以在发送之前需要对短信内容做校验,看是否含有中文,如果含有则直接将短信发送状态改为失败,不用再去调用第三方;

【探索之旅】

站在巨人的肩膀上, 立马在网上搜索一下关于Java怎么判断字符串中是否含有中文;果然网上有很多实现;

一、实现方式一

1、针对每个字符判断

1 public static boolean isChinese(String str) throwsUnsupportedEncodingException2 {3 int len =str.length();4 for(int i = 0;i < len;i ++)5 {6 String temp = URLEncoder.encode(str.charAt(i) + "", "utf-8");7 if(temp.equals(str.charAt(i) + ""))8 continue;9 String[] codes = temp.split("%");10 //判断是中文还是字符(下面判断不精确,部分字符没有包括)

11 for(String code:codes)12 {13 if(code.compareTo("40") > 0)14 return true;15 }16 }17 return false;18 }

2、优缺点:

a.缺点:效率低【每次都需要循环检测字符串中每个字符】(每次发送都需要检测短信内容,每条内容有很多字符);

b.优点:不仅能检测出中文汉字还能检测中中文标点;

二、实现方式二

1、利用正则表达式:

1 public static booleanisContainChinese(String str) {2

3 Pattern p = Pattern.compile("[\u4e00-\u9fa5]");4 Matcher m =p.matcher(str);5 if(m.find()) {6 return true;7 }8 return false;9 }

2、优缺点:

a.缺点:只能检测出中文汉字不能检测中文标点;

b.优点:利用正则效率高;

三、方式三

1、改造正则

1 /**

2 * 字符串是否包含中文3 *4 *@paramstr 待校验字符串5 *@returntrue 包含中文字符 false 不包含中文字符6 *@throwsEmptyException7 */

8 public static boolean isContainChinese(String str) throwsEmptyException {9

10 if(StringUtils.isEmpty(str)) {11 throw new EmptyException("sms context is empty!");12 }13 Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");14 Matcher m =p.matcher(str);15 if(m.find()) {16 return true;17 }18 return false;19 }

2、优缺点:

a.优点:效率既高又能检测出中文汉字和中文标点;

b.缺点:目前尚未发现。

【总结】

1、站在巨人的肩膀上,多去查,多做比较;

2、针对程序不断的优化,比如第一种方式循环读字符串量大后很容易将服务器CPU搞崩。

java判断字符串是否是中文_Java检查字符串是否包含中文字符相关推荐

  1. java字符串去掉中文_Java——去除字符串中的中文

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RemoveStrChinese { priv ...

  2. java aes 中文_java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)...

    在对安全性要求比较高的报文做加密的时候,算法有很多种,我这里主要用到的就是AES加密算法.由于在国内使用,所以不可避免的要对中文进行加密和解密,而在这个过程中,发现,如果不做处理,很容易会出现中文乱码 ...

  3. java 比较字符串前几位_java截取字符串前几位

    java截取字符串_IT/计算机_专业资料.java截取字符串 1根据字符串 S... java中常用的字符串的截取方法_计算机软件及应用_IT/计算机_专业资料.jsp中常见使用技术,js,jstl ...

  4. java中String类是什么_Java中字符串的学习(一)String类的概述及常见方法使用

    转载请注明出处http://www.cnblogs.com/devtrees/p/4347079.html (拓展:Api:编程语言对外给我们提供的应用程序接口.) 一.概述: 我们平时上网发帖,帖子 ...

  5. java判断integer是否为空_java安全编码指南之:表达式规则

    简介 在java编写过程中,我们会使用到各种各样的表达式,在使用表达式的过程中,有哪些安全问题需要我们注意的呢?一起来看看吧. 注意表达式的返回值 我们在使用JDK库的时候,一定要注意认真的读一下JD ...

  6. java判断是否为文件夹_java怎么判断是否文件夹

    java判断是否是文件夹: 在桌面建立了一个名为one的文件,路径为:/Users/XXXXXX/Desktop/one java代码如下:import java.io.File; public cl ...

  7. java 判断对象是否为空_java怎么判断对象是否为空

    java怎么判断对象是否为空 发布时间:2020-06-22 11:28:11 来源:亿速云 阅读:122 作者:Leah 本篇文章展示了java判断对象是否为空的具体操作,代码简明扼要容易理解,绝对 ...

  8. java 判断一个文件是否存在_java判断某个文件是否存在的方法

    java判断某个文件是否存在的方法 发布时间:2020-06-25 17:09:42 来源:亿速云 阅读:119 作者:Leah 这篇文章运用简单易懂的例子给大家介绍java判断某个文件是否存在的方法 ...

  9. java字符串 n换行符_java切割字符串中的回车应注意是\n\r不是\n

    我们在Java中如果用到处理要分隔字符串,不免会用到String的split(String regex)函数,这时候我们要注意的. 如果想以回车来分隔字符串,很多同学都会这样做.下面是例子: Stri ...

  10. java 判断请求为 ajax请求_Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求...

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java 判断请求是不是ajax请求,Java判断是否为ajax请求 >>>>>> ...

最新文章

  1. go语言任意代码执行漏洞 cve-2018-6574
  2. linux下创建和删除软、硬链接
  3. 千万PV级别WEB站点架构设计
  4. Caffe学习系列(12):训练和测试自己的图片
  5. python find函数实现原理_非常干货:Python 探针实现原理
  6. 富士 FinePix F401
  7. stm32串口空闲中断接收不定长数据
  8. breakall lisp文件_CAD图导入SU中一次成面的方法
  9. Python制作翻译软件(中英文互译)
  10. 学语言python研究生专业目录一览表_本科专业与研究生学科专业目录对照表格模板...
  11. Linux meset
  12. 1. 无穷维空间的测度论-Wiener测度(二)
  13. 本科毕业论文外文翻译必须要翻译全文吗?
  14. Web Directions South 2012的四个大创意
  15. FreeType2使用总结
  16. 雷林鹏最人性化访谈:做投资不仅仅是要赚钱,要成为有价值的人
  17. Beetl开源那些事3
  18. 跨跃平台交流无极限——linux下如何使用即时聊天工具,跨跃平台 交流无极限——Linux下如何使用即时聊天工具(一)...
  19. c语言中百分号后面跟的数字_C语言中的各种百分号都代表什么意思
  20. python编程用什么软件?

热门文章

  1. javaweb站点根目录和web应用根目录应用场景
  2. 新型城镇化提质扩容 打造民村智慧城市
  3. 2017博鳌新型城镇化发展大会,机智云斩获2017中国智慧城市生态圈杰出企业、智慧城市创新应用双料大奖
  4. php 模拟登陆微云,微云 - HHTjim'S 部落格
  5. 从EDN上看的文章 如何提高手机的待机时长
  6. cannot find -lbz2
  7. Win11如何查看硬盘型号?
  8. html布尔属性写法,HTML - 为什么布尔属性没有布尔值?
  9. 变换元素transform和过渡元素transition混合使用
  10. android 面包屑控件,android面包屑導航欄的實現