时间:2021-05-20
在做项目中经常会遇到有项目需求是需要判断字符为中文的一些问题,所以搜集了判断中文字符的代码片段,特此分享供大家参考。
直接贴出代码了,里面有详细的注释。
package com.coder4j.main;import java.util.regex.Pattern;/*** Java 判断中文字符* * @author Chinaxiang* @date 2015-08-11**/public class CheckChinese {public static void main(String[] args) {// 纯英文String s1 = "Hello,Tom.!@#$%^&*()_+-={}|[];':\"?";// 纯中文(不含中文标点)String s2 = "你好中国";// 纯中文(含中文标点)String s3 = "你好,中国。《》:“”‘';()【】!¥、";// 韩文String s4 = "한국어난";// 日文String s5 = "ぎじゅつ";// 特殊字符String s6 = "��";String s7 = "╃";String s8 = "╂";// 繁体中文String s9 = "蒼老師";// 1 使用字符范围判断System.out.println("s1是否包含中文:" + hasChineseByRange(s1));// falseSystem.out.println("s2是否包含中文:" + hasChineseByRange(s2));// trueSystem.out.println("s3是否包含中文:" + hasChineseByRange(s3));// trueSystem.out.println("s4是否包含中文:" + hasChineseByRange(s4));// falseSystem.out.println("s5是否包含中文:" + hasChineseByRange(s5));// falseSystem.out.println("s6是否包含中文:" + hasChineseByRange(s6));// falseSystem.out.println("s7是否包含中文:" + hasChineseByRange(s7));// falseSystem.out.println("s8是否包含中文:" + hasChineseByRange(s8));// falseSystem.out.println("s9是否包含中文:" + hasChineseByRange(s9));// trueSystem.out.println("-------分割线-------");System.out.println("s1是否全是中文:" + isChineseByRange(s1));// falseSystem.out.println("s2是否全是中文:" + isChineseByRange(s2));// trueSystem.out.println("s3是否全是中文:" + isChineseByRange(s3));// false 中文标点不在范围内System.out.println("s4是否全是中文:" + isChineseByRange(s4));// falseSystem.out.println("s5是否全是中文:" + isChineseByRange(s5));// falseSystem.out.println("s6是否全是中文:" + isChineseByRange(s6));// falseSystem.out.println("s7是否全是中文:" + isChineseByRange(s7));// falseSystem.out.println("s8是否全是中文:" + isChineseByRange(s8));// falseSystem.out.println("s9是否全是中文:" + isChineseByRange(s9));// trueSystem.out.println("-------分割线-------");// 2 使用字符范围正则判断(结果同1)System.out.println("s1是否包含中文:" + hasChineseByReg(s1));// falseSystem.out.println("s2是否包含中文:" + hasChineseByReg(s2));// trueSystem.out.println("s3是否包含中文:" + hasChineseByReg(s3));// trueSystem.out.println("s4是否包含中文:" + hasChineseByReg(s4));// falseSystem.out.println("s5是否包含中文:" + hasChineseByReg(s5));// falseSystem.out.println("s6是否包含中文:" + hasChineseByReg(s6));// falseSystem.out.println("s7是否包含中文:" + hasChineseByReg(s7));// falseSystem.out.println("s8是否包含中文:" + hasChineseByReg(s8));// falseSystem.out.println("s9是否包含中文:" + hasChineseByReg(s9));// trueSystem.out.println("-------分割线-------");System.out.println("s1是否全是中文:" + isChineseByReg(s1));// falseSystem.out.println("s2是否全是中文:" + isChineseByReg(s2));// trueSystem.out.println("s3是否全是中文:" + isChineseByReg(s3));// false 中文标点不在范围内System.out.println("s4是否全是中文:" + isChineseByReg(s4));// falseSystem.out.println("s5是否全是中文:" + isChineseByReg(s5));// falseSystem.out.println("s6是否全是中文:" + isChineseByReg(s6));// falseSystem.out.println("s7是否全是中文:" + isChineseByReg(s7));// falseSystem.out.println("s8是否全是中文:" + isChineseByReg(s8));// falseSystem.out.println("s9是否全是中文:" + isChineseByReg(s9));// trueSystem.out.println("-------分割线-------");// 3 使用CJK字符集判断System.out.println("s1是否包含中文:" + hasChinese(s1));// falseSystem.out.println("s2是否包含中文:" + hasChinese(s2));// trueSystem.out.println("s3是否包含中文:" + hasChinese(s3));// trueSystem.out.println("s4是否包含中文:" + hasChinese(s4));// falseSystem.out.println("s5是否包含中文:" + hasChinese(s5));// falseSystem.out.println("s6是否包含中文:" + hasChinese(s6));// falseSystem.out.println("s7是否包含中文:" + hasChinese(s7));// falseSystem.out.println("s8是否包含中文:" + hasChinese(s8));// falseSystem.out.println("s9是否包含中文:" + hasChinese(s9));// trueSystem.out.println("-------分割线-------");System.out.println("s1是否全是中文:" + isChinese(s1));// falseSystem.out.println("s2是否全是中文:" + isChinese(s2));// trueSystem.out.println("s3是否全是中文:" + isChinese(s3));// true 中文标点也被包含进来System.out.println("s4是否全是中文:" + isChinese(s4));// falseSystem.out.println("s5是否全是中文:" + isChinese(s5));// falseSystem.out.println("s6是否全是中文:" + isChinese(s6));// falseSystem.out.println("s7是否全是中文:" + isChinese(s7));// falseSystem.out.println("s8是否全是中文:" + isChinese(s8));// falseSystem.out.println("s9是否全是中文:" + isChinese(s9));// true}/*** 是否包含中文字符<br>* 包含中文标点符号<br>* * @param str* @return*/public static boolean hasChinese(String str) {if (str == null) {return false;}char[] ch = str.toCharArray();for (char c : ch) {if (isChinese(c)) {return true;}}return false;}/*** 是否全是中文字符<br>* 包含中文标点符号<br>* * @param str* @return*/public static boolean isChinese(String str) {if (str == null) {return false;}char[] ch = str.toCharArray();for (char c : ch) {if (!isChinese(c)) {return false;}}return true;}/*** 是否是中文字符<br>* 包含中文标点符号<br>* * @param c* @return*/private static boolean isChinese(char c) {Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) {return true;} else if (ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS) {return true;} else if (ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION) {return true;} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A) {return true;} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B) {return true;} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C) {return true;} else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) {return true;} else if (ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {return true;} else if (ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {return true;}return false;}/*** 是否包含汉字<br>* 根据汉字编码范围进行判断<br>* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br>* * @param str* @return*/public static boolean hasChineseByReg(String str) {if (str == null) {return false;}Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");return pattern.matcher(str).find();}/*** 是否全是汉字<br>* 根据汉字编码范围进行判断<br>* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br>* * @param str* @return*/public static boolean isChineseByReg(String str) {if (str == null) {return false;}Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");return pattern.matcher(str).matches();}/*** 是否包含汉字<br>* 根据汉字编码范围进行判断<br>* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br>* * @param str* @return*/public static boolean hasChineseByRange(String str) {if (str == null) {return false;}char[] ch = str.toCharArray();for (char c : ch) {if (c >= 0x4E00 && c <= 0x9FBF) {return true;}}return false;}/*** 是否全是汉字<br>* 根据汉字编码范围进行判断<br>* CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br>* * @param str* @return*/public static boolean isChineseByRange(String str) {if (str == null) {return false;}char[] ch = str.toCharArray();for (char c : ch) {if (c < 0x4E00 || c > 0x9FBF) {return false;}}return true;}}如果仅仅去判断是否是中文,不需判断中文标点的话,推荐使用正则去匹配,可能更高效点。
以上代码内容给大家介绍了Java 判断字符为中文实例代码(超管用),希望对大家有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java判断字符串中是否包含中文的实例详解Java判断一个字符串是否有中文是利用Unicode编码来判断,因为中文的编码区间为:0x4e00--0x9fbb,不
具体代码如下所示:/***判断字符是否是中文**@paramc字符*@return是否是中文*/publicstaticbooleanisChinese(cha
本文实例为大家分享了Java实现中文字符串与unicode互转的具体代码,供大家参考,具体内容如下原理利用了java实现js的escape以及unescape函
在ASP(VBScript为语言)中,Asc函数的返回值小于0的,可以被判断为中文字符。Asc函数返回与字符串的第一个字母对应的ANSI字符代码。复制代码代码如
本文实例讲述了php自定义函数实现统计中文字符串长度的方法。分享给大家供大家参考,具体如下:中文字符计算为2个字符英文字符计算为1个代码/***可以统计中文字符