Java判断并总结了一个字符串str中的中文个数,有以下几种方法(全部验证完毕),根据其原理可以判断在什么情况下使用哪个方法。
1、
1 char[] c=str.toCharArray (; 2for(intI=0; i c.length; I )3{4} string len=integer.tobinarystring (c [ I ]; 5if(Len.Length ) )8) 6计数; 7 }
由于一个中文占两个字节,如果一个字符的字节数大于8,就判断为中文。
2,
String regEx='[\u4e00-\u9fa5];
string term=str.replace all (regex,' aa );
count=term.length(-str.length );
[u4e00-u9fa5]是中文Unicode代码范围,用正则表达式的方法,如果字符串中有符合中文正则表达式的字符,则判定为中文,将其替换为两个字符,因此长度差为中文的个数。
3、
String regEx='[u4e00-u9fa5] ';
patternp=pattern.compile(regex );
matcherm=p.matcher(str; while(m.find ) )
{
出局;
}
与第二种方法的原理一样,如果只使用了Pattern类,但Matcher匹配,则表示找到了中文字符。
4,
byte[] bytStr=str.getBytes (;
system.out.println(bytstr; for(intI=0; i bytStr.length; I )
{if(bytstr[I]0)//java中文字符为负字节值
{
出局;
I; //中文字符为2字节
}
}
如上注释所述,中文字符为2字节,中文字符的字节值为负。 用这个方法判断。
5、
String regEx='[^u4e00-u9fa5];
string[]term=str.split(regex; for(intI=0; i term.length; I )
count=count term[i].length (;
还是正则表达式的判断方法。 该正则表达式的含义出现在除中文以外的所有字符的Unicode代码中,除了这些中文字符以外的其他字符,其余都是中文字符,得到的是中文字符串的数据。