1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 区分中英文_在java中如何判断一个字符串是中文的还是英文的

java 区分中英文_在java中如何判断一个字符串是中文的还是英文的

时间:2020-03-17 10:37:03

相关推荐

java 区分中英文_在java中如何判断一个字符串是中文的还是英文的

展开全部

下满给62616964757a686964616fe58685e5aeb931333361326264出示例代码,希望对你有帮助

Java中判断字符串的编码有两种思路:

一种是根据byte的长度判断,英文的字母数字好标点符号都是一个byte,且值在0-255之间

另一种是根据中文的Unicode取值范围判断,这个就是把所以的范围都包含,才能判断正确,参考unicode中文范围:

示例代码:

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

publicclassStringTest{

//英文占1byte,非英文(可认为是中文)占2byte,根据这个特性来判断字符

publicstaticbooleancheckChar(charch){

if((ch+"").getBytes().length==1){

returntrue;//英文

}else{

returnfalse;//中文

}

}

publicstaticStringcheckString(Stringstr){

Stringres="";

if(str!=null){

for(inti=0;i

//只要字符串中有中文则为中文

if(!checkChar(str.charAt(i))){

res="中文";

break;

}else{

res="英文";

}

}

}

returnres;

}

//判断是不是中文

publicstaticbooleanisChinese(charc){

Character.UnicodeBlockub=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){

returntrue;

}

returnfalse;

}

//判断是不是英文字母

publicstaticbooleanisEnglish(StringcharaString){

returncharaString.matches("^[a-zA-Z]*");

}

//根据中文unicode范围判断u4e00~u9fa5不全

publicstaticStringisChinese(Stringstr){

StringregEx1="[\\u4e00-\\u9fa5]+";

StringregEx2="[\\uFF00-\\uFFEF]+";

StringregEx3="[\\u2E80-\\u2EFF]+";

StringregEx4="[\\u3000-\\u303F]+";

StringregEx5="[\\u31C0-\\u31EF]+";

Patternp1=pile(regEx1);

Patternp2=pile(regEx2);

Patternp3=pile(regEx3);

Patternp4=pile(regEx4);

Patternp5=pile(regEx5);

Matcherm1=p1.matcher(str);

Matcherm2=p2.matcher(str);

Matcherm3=p3.matcher(str);

Matcherm4=p4.matcher(str);

Matcherm5=p5.matcher(str);

if(m1.find()||m2.find()||m3.find()||m4.find()||m5.find())

return"中文";

else

return"英文";

}

publicstaticvoidmain(String[]args){

System.out.println("使用长度判断:");

System.out.println(checkString("Hello++"));

System.out.println(checkString("Hello++。、,?"));

System.out.println(checkString("Hello++编程"));

System.out.println(checkString("编程"));

System.out.println("\r\n使用正则表达式判断:");

System.out.println(isChinese("Hello++"));

System.out.println(isChinese("Hello++。、,?"));

System.out.println(isChinese("Hello++编程"));

System.out.println(isChinese("编程"));

System.out.println("\r\n使用Character.UnicodeBlock");

System.out.println(isChinese('h')?"中文":"英文");

System.out.println(isChinese(',')?"中文":"英文");

System.out.println(isChinese('。')?"中文":"英文");

System.out.println(isChinese('编')?"中文":"英文");

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。