public static void main(String[] args) { // TODO Auto-generated method stub Sum sum=new Sum(); String string="df我d一个兵啊啊啊aa!"; System.out.println(sum.GetCount(string)); } public int GetCount(String string) { int count=0; for (int i = 0; i < string.length(); i++) { char a=string.charAt(i); if (a >= 0x4e00 && a <= 0x9fa5) { count++; } } return count; } //输出7
public static void main(String args[]) throws Exception { String s = "fjdis 爱在夕阳下,采菊东篱下 jf jd sjoa fd 悠然见南山"; byte[] b = s.getBytes("unicode"); int length = b.length; int cnt = 0; final int min = Integer.parseInt("4E00", 16); final int max = Integer.parseInt("9FA5", 16); for (int i = 0; i < length; i += 2) { int val1 = 0x00FF & b[i]; val1 = val1 << 8; int val2 = 0x00FF & b[i+1]; int temp = val1 | val2; if (min <= temp && temp <= max) { cnt++; } } System.out.print(cnt); } 我写了一个,好像不包括标点符号。 值的范围有待调整。
用数据库的length()函数能得到
或者去出来用String的length()方法能得到。。如果是是在前台的,获取文章这块的节点,用tag.innerHTML.length能得到看你具体条件
然后循环,如果不是中文,则去掉。
最后byte/2就是中文字符数。
统计字数就String.length();
哦?把你的代码贴出来看看
public static void main(String[] args) {
// TODO Auto-generated method stub
Sum sum=new Sum();
String string="df我d一个兵啊啊啊aa!";
System.out.println(sum.GetCount(string));
}
public int GetCount(String string) {
int count=0;
for (int i = 0; i < string.length(); i++) {
char a=string.charAt(i);
if (a >= 0x4e00 && a <= 0x9fa5) {
count++;
}
}
return count;
}
//输出7
String s = "fjdis 爱在夕阳下,采菊东篱下 jf jd sjoa fd 悠然见南山";
byte[] b = s.getBytes("unicode");
int length = b.length;
int cnt = 0;
final int min = Integer.parseInt("4E00", 16);
final int max = Integer.parseInt("9FA5", 16);
for (int i = 0; i < length; i += 2) {
int val1 = 0x00FF & b[i];
val1 = val1 << 8;
int val2 = 0x00FF & b[i+1];
int temp = val1 | val2;
if (min <= temp && temp <= max) {
cnt++;
}
}
System.out.print(cnt);
}
我写了一个,好像不包括标点符号。
值的范围有待调整。
我也测了下,确实没带标点。查了下,有人说中文标点的范围是大等于0xfe30,小等于0xffa0
测了下这区间,全角的字母和标点都在里头,不过没包含中文空格