java判断字符个数_使⽤Java判断字符串中的中⽂字符数量Java判断⼀个字符串str中中⽂的个数,经过总结,有以下⼏种⽅法(全部经过验证),可根据其原理判断在何种情况下使⽤哪个⽅法:
1、
1 char[] c =CharArray();
2 for(int i = 0; i < c.length; i ++)
3 {
4 String len =BinaryString(c[i]);
5 if(len.length() > 8)
6 count ++;
7 }
根据⼀个中⽂占两个字节,假如⼀个字符的字节数⼤于8,则判断为中⽂。
2 、
String regEx = "[\\u4e00-\\u9fa5]";
String term= placeAll(regEx, "aa");
count= term.length()-str.length();
[\u4e00-\u9fa5]是中⽂的Unicode编码范围,⽤正则表达式的⽅法,若字符串中有字符满⾜中⽂的正则表达式,则判定为中⽂,将其替换为两个字符,故长度差就为中⽂的个数。
3、
String regEx = "[\u4e00-\u9fa5]";
Pattern p=Patternpile(regEx);
Matcher m=p.matcher(str);while(m.find())
{
count++;
}
与第⼆种⽅法原理⼀样,只是⽤了Pattern类,若Matcher可以匹配,则说明到了⼀个中⽂字符。
4、
byte[] bytStr =Bytes();
System.out.println(bytStr);for(int i = 0; i < bytStr.length; i ++)
{if(bytStr[i] < 0 )//java中⽂字符是负的BYTE值
{
count++;
i++;//中⽂字符是双字节
}
}
如上的注释所说,中⽂字符是双字节,且中⽂字符的byte值是负的,⽤这个⽅法来判断。
中文字符unicode查询5、
String regEx = "[^\u4e00-\u9fa5]+";
String[] term=str.split(regEx);for(int i =0; i < term.length; i ++)
count= count + term[i].length();
仍然是正则表达式的判断⽅法。该正则表达式的含义是出去中⽂以外的所有字符的Unicode编码,将这些除去中⽂字符之外的其他字符去除,剩下的就都是中⽂字符,得到的就是中⽂字符串的数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论