java 代码实现判断字符串中是否包含乱码 (一个小工具类超级实用)

您所在的位置:网站首页 java判断是否包含字符串 java 代码实现判断字符串中是否包含乱码 (一个小工具类超级实用)

java 代码实现判断字符串中是否包含乱码 (一个小工具类超级实用)

2024-03-19 04:39| 来源: 网络整理| 查看: 265

废话不多说, 直接上代码:

package cn.seatech.util; import com.sun.javafx.scene.transform.TransformUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** Java 判断字符串 中文是否为乱码 * Created by 欢迎关注 [java大数据修炼之道] 微信公众号 on 2021/3/2. */ public class ChineseUtill { public static void main(String[] args) { System.out.println(isMessyCode("你好"));//false 没有乱码返回false System.out.println(isMessyCode("A��ͣ״̬\":0,\"9B��"));//包含乱码返回true System.out.println(isChinese('a')); //false 字符 'a'不是中文所以直接返回false System.out.println(isChinese('我'));//true 字符 '我' 是中文所以返回true 补充说明一点, 这下大家可以看到java中 单个字符是可以存储中文的!! } /** * 判断字符是否为中文 * @param c * @return 字符是中文返回 true, 否则返回false */ 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.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; } /** * 判断字符串是否包含乱码 * @param strText 需要判断的字符串 * @return 字符串包含乱码则返回true, 字符串不包含乱码则返回false */ public static boolean isMessyCode(String strText) { Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*"); Matcher m = p.matcher(strText); String after = m.replaceAll(""); String temp = after.replaceAll("\\p{P}", ""); char[] ch = temp.trim().toCharArray(); float chLength = 0 ; float count = 0; for (int i = 0; i < ch.length; i++) { char c = ch[i]; if (!Character.isLetterOrDigit(c)) { if (!isChinese(c)) { count = count + 1; } chLength++; } } float result = count / chLength ; if (result > 0.4) { return true; } else { return false; } } }

关于代码的注释, 参数的解释小编在上面具体代码中都写有注释, 大家直接看就行, 还有就是注意最上面的导包别导错了, 之所以把 isChinese(char c) 和 isMessyCode(String strText)写成静态的就是为了在其他类中方便调用, 直接类名.方法名(参数) 调用即可, 也就是小编把其封装成了一个工具类, 今天的实战代码案例就先写到这了,下期我们不见不散, 原创不易, 欢迎点赞 收藏 转发一键三连, 感谢您的支持 !!

下面是小编的私人公众号, 分享 包括 互联网 各种java知识技能, 包括但不局限于 技术/面经/ 各种java学习资源等

欢迎大家识别二维码关注我的微信公众号 , 每晚九点, 干货技术文章, 第一时间推送, 这里总会有你想学的java知识 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3