展开全部
下满给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('编')?"中文":"英文");
}
}