Java 判断字符为中文实例代码(超管用)
在做项目中经常会遇到有项目需求是需要判断字符为中文的一些问题,所以搜集了判断中文字符的代码片段,特此分享供大家参考。
直接贴出代码了,里面有详细的注释。
packagecom.coder4j.main; importjava.util.regex.Pattern; /** *Java判断中文字符 * *@authorChinaxiang *@date2015-08-11 * */ publicclassCheckChinese{ publicstaticvoidmain(String[]args){ //纯英文 Strings1="Hello,Tom.!@#$%^&*()_+-={}|[];':\"?"; //纯中文(不含中文标点) Strings2="你好中国"; //纯中文(含中文标点) Strings3="你好,中国。《》:“”‘';()【】!¥、"; //韩文 Strings4="한국어난"; //日文 Strings5="ぎじゅつ"; //特殊字符 Strings6="��"; Strings7="╃"; Strings8="╂"; //繁体中文 Strings9="蒼老師"; //1使用字符范围判断 System.out.println("s1是否包含中文:"+hasChineseByRange(s1));//false System.out.println("s2是否包含中文:"+hasChineseByRange(s2));//true System.out.println("s3是否包含中文:"+hasChineseByRange(s3));//true System.out.println("s4是否包含中文:"+hasChineseByRange(s4));//false System.out.println("s5是否包含中文:"+hasChineseByRange(s5));//false System.out.println("s6是否包含中文:"+hasChineseByRange(s6));//false System.out.println("s7是否包含中文:"+hasChineseByRange(s7));//false System.out.println("s8是否包含中文:"+hasChineseByRange(s8));//false System.out.println("s9是否包含中文:"+hasChineseByRange(s9));//true System.out.println("-------分割线-------"); System.out.println("s1是否全是中文:"+isChineseByRange(s1));//false System.out.println("s2是否全是中文:"+isChineseByRange(s2));//true System.out.println("s3是否全是中文:"+isChineseByRange(s3));//false中文标点不在范围内 System.out.println("s4是否全是中文:"+isChineseByRange(s4));//false System.out.println("s5是否全是中文:"+isChineseByRange(s5));//false System.out.println("s6是否全是中文:"+isChineseByRange(s6));//false System.out.println("s7是否全是中文:"+isChineseByRange(s7));//false System.out.println("s8是否全是中文:"+isChineseByRange(s8));//false System.out.println("s9是否全是中文:"+isChineseByRange(s9));//true System.out.println("-------分割线-------"); //2使用字符范围正则判断(结果同1) System.out.println("s1是否包含中文:"+hasChineseByReg(s1));//false System.out.println("s2是否包含中文:"+hasChineseByReg(s2));//true System.out.println("s3是否包含中文:"+hasChineseByReg(s3));//true System.out.println("s4是否包含中文:"+hasChineseByReg(s4));//false System.out.println("s5是否包含中文:"+hasChineseByReg(s5));//false System.out.println("s6是否包含中文:"+hasChineseByReg(s6));//false System.out.println("s7是否包含中文:"+hasChineseByReg(s7));//false System.out.println("s8是否包含中文:"+hasChineseByReg(s8));//false System.out.println("s9是否包含中文:"+hasChineseByReg(s9));//true System.out.println("-------分割线-------"); System.out.println("s1是否全是中文:"+isChineseByReg(s1));//false System.out.println("s2是否全是中文:"+isChineseByReg(s2));//true System.out.println("s3是否全是中文:"+isChineseByReg(s3));//false中文标点不在范围内 System.out.println("s4是否全是中文:"+isChineseByReg(s4));//false System.out.println("s5是否全是中文:"+isChineseByReg(s5));//false System.out.println("s6是否全是中文:"+isChineseByReg(s6));//false System.out.println("s7是否全是中文:"+isChineseByReg(s7));//false System.out.println("s8是否全是中文:"+isChineseByReg(s8));//false System.out.println("s9是否全是中文:"+isChineseByReg(s9));//true System.out.println("-------分割线-------"); //3使用CJK字符集判断 System.out.println("s1是否包含中文:"+hasChinese(s1));//false System.out.println("s2是否包含中文:"+hasChinese(s2));//true System.out.println("s3是否包含中文:"+hasChinese(s3));//true System.out.println("s4是否包含中文:"+hasChinese(s4));//false System.out.println("s5是否包含中文:"+hasChinese(s5));//false System.out.println("s6是否包含中文:"+hasChinese(s6));//false System.out.println("s7是否包含中文:"+hasChinese(s7));//false System.out.println("s8是否包含中文:"+hasChinese(s8));//false System.out.println("s9是否包含中文:"+hasChinese(s9));//true System.out.println("-------分割线-------"); System.out.println("s1是否全是中文:"+isChinese(s1));//false System.out.println("s2是否全是中文:"+isChinese(s2));//true System.out.println("s3是否全是中文:"+isChinese(s3));//true中文标点也被包含进来 System.out.println("s4是否全是中文:"+isChinese(s4));//false System.out.println("s5是否全是中文:"+isChinese(s5));//false System.out.println("s6是否全是中文:"+isChinese(s6));//false System.out.println("s7是否全是中文:"+isChinese(s7));//false System.out.println("s8是否全是中文:"+isChinese(s8));//false System.out.println("s9是否全是中文:"+isChinese(s9));//true } /** *是否包含中文字符<br> *包含中文标点符号<br> * *@paramstr *@return */ publicstaticbooleanhasChinese(Stringstr){ if(str==null){ returnfalse; } char[]ch=str.toCharArray(); for(charc:ch){ if(isChinese(c)){ returntrue; } } returnfalse; } /** *是否全是中文字符<br> *包含中文标点符号<br> * *@paramstr *@return */ publicstaticbooleanisChinese(Stringstr){ if(str==null){ returnfalse; } char[]ch=str.toCharArray(); for(charc:ch){ if(!isChinese(c)){ returnfalse; } } returntrue; } /** *是否是中文字符<br> *包含中文标点符号<br> * *@paramc *@return */ privatestaticbooleanisChinese(charc){ Character.UnicodeBlockub=Character.UnicodeBlock.of(c); if(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C){ returntrue; }elseif(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D){ returntrue; }elseif(ub==Character.UnicodeBlock.GENERAL_PUNCTUATION){ returntrue; }elseif(ub==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){ returntrue; } returnfalse; } /** *是否包含汉字<br> *根据汉字编码范围进行判断<br> *CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br> * *@paramstr *@return */ publicstaticbooleanhasChineseByReg(Stringstr){ if(str==null){ returnfalse; } Patternpattern=Pattern.compile("[\\u4E00-\\u9FBF]+"); returnpattern.matcher(str).find(); } /** *是否全是汉字<br> *根据汉字编码范围进行判断<br> *CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br> * *@paramstr *@return */ publicstaticbooleanisChineseByReg(Stringstr){ if(str==null){ returnfalse; } Patternpattern=Pattern.compile("[\\u4E00-\\u9FBF]+"); returnpattern.matcher(str).matches(); } /** *是否包含汉字<br> *根据汉字编码范围进行判断<br> *CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br> * *@paramstr *@return */ publicstaticbooleanhasChineseByRange(Stringstr){ if(str==null){ returnfalse; } char[]ch=str.toCharArray(); for(charc:ch){ if(c>=0x4E00&&c<=0x9FBF){ returntrue; } } returnfalse; } /** *是否全是汉字<br> *根据汉字编码范围进行判断<br> *CJK统一汉字(不包含中文的,。《》()“‘'”、!¥等符号)<br> * *@paramstr *@return */ publicstaticbooleanisChineseByRange(Stringstr){ if(str==null){ returnfalse; } char[]ch=str.toCharArray(); for(charc:ch){ if(c<0x4E00||c>0x9FBF){ returnfalse; } } returntrue; } }
如果仅仅去判断是否是中文,不需判断中文标点的话,推荐使用正则去匹配,可能更高效点。
以上代码内容给大家介绍了Java判断字符为中文实例代码(超管用),希望对大家有所帮助。