首页 > 代码库 > java 实现新浪微博内容计数器
java 实现新浪微博内容计数器
http://www.mr3g.net/?p=220
参考sina的js版本而来,费弄最多的时间就是java对ansii码的判断了,js直接就是isascii()函数就可以实现了,java还要想办法
参考sina的js版本而来,费弄最多的时间就是java对ansii码的判断了,js直接就是isascii()函数就可以实现了,java还要想办法
最后参考了两篇文章,才整出来这个判断
js代码:
- (int)sinaCountWord:(NSString*)s
{
int i,n=[s length],l=0,a=0,b=0;
unichar c;
for(i=0;i<n;i++){
c=[s characterAtIndex:i];
if(isblank(c)){
b++;
}else if(isascii(c)){
a++;
}else{
l++;
}
}
if(a==0 && l==0) return 0;
return l+(int)ceilf((float)(a+b)/2.0);
}
{
int i,n=[s length],l=0,a=0,b=0;
unichar c;
for(i=0;i<n;i++){
c=[s characterAtIndex:i];
if(isblank(c)){
b++;
}else if(isascii(c)){
a++;
}else{
l++;
}
}
if(a==0 && l==0) return 0;
return l+(int)ceilf((float)(a+b)/2.0);
}
参考js版本,java实现代码:
/**
* 新浪微博内容计数器
*
* @param s
* @return
*/
public static int sinaCountWord(String s) {
int i, n = s.length(), l = 0, a = 0, b = 0;
char c;
for (i = 0; i < n; i++) {
c = s.charAt(i);
if (Character.isWhitespace(c)) {
b++;
} else if (c >= 0 && c <= 127) {
// } else if (!Character.isLetter(c)) {
a++;
} else {
l++;
}
}
if (a == 0 && l == 0)
return 0;
return l + (int) Math.ceil((float) (a + b) / 2.0);
}
参考文章链接:
两个判断方法原理是一样的,只不过一个实现的是用十进制判断,另一个是16进制
java判断字符串是否为ascii
//这个判断实现的是,用数字来判断,就是16进制0x00的十进制值
if(ch>=127||ch<0)return false;
CSDN - 对UTF8编码方式字数做统计的函数
//这个判断实现的是,用字节比较16进制(0x00)内容
#define UTF8_ASCII(byte) (((unsigned char)(byte)>=0x00)&&((unsigned char)(byte)<=0x7F))
java 实现新浪微博内容计数器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。