美文网首页
仿微博计算文字数量 适用于UITextView/UITextfi

仿微博计算文字数量 适用于UITextView/UITextfi

作者: GloryMan | 来源:发表于2018-01-09 15:47 被阅读30次

title: 仿微博计算文字数量 适用于UITextView/UITextfield
date: 2016-06-21 17:30:34
categories:

  • Code
  • iOS
    tags:
  • UITextView
  • UITextfield

由于项目之前的计算文字的方法有问题,之前的是不管是汉字还是数字,字符,字母都是一个字符。所以产品需求改变,汉字一个字符,其他两个算一个字符,比如: 11 算一个字符 、aa 算一个字符、 a7 算一个字符。 所以这里整理下计算文字字符数的方法分享给大家,希望对大家有所帮助。

ios Textfield or TextView 显示文字字数计算

实现代码

- (NSInteger)countWord:(NSString*)s
{
    NSUInteger asciiLength = 0;
    
    for (NSUInteger i = 0; i < s.length; i++) {
            // 得到第i个字符的ascii码
        unichar uc = [s characterAtIndex: i];
        // 判断是否是ASCII码 是 +1 否 +2 
        asciiLength += isascii(uc) ? 1 : 2;
    }
    // 总字符➗2 = 实际字符
    NSUInteger unicodeLength = asciiLength / 2;
    
    // 判断是否是基数 基数说明多半个字符需要 +1 否则 不加
    if(asciiLength % 2) {
        unicodeLength++;
    }
    return unicodeLength;
}

这个是网上找到的据说是某微博的代码 你们可以参考下

-(NSInteger)sinaCountWord:(NSString *)word
{
    NSInteger i, n =[word length],l=0,a=0,b=0;
    unichar c;
    for(i=0;i<n;i++){
        c=[word 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);
}

实现原理

利用ASCII码对照表,转换输入的每个字符对比。
注释已经很清楚的不懂得可以看下

源码地址:GitHub

博客地址:xinxibin.com


本来想准备一份 swift版本的,由于能力有限,没有转换出来
有朋友转换出来的话给我发一份,万分感谢。
邮箱地址:506907778@qq.com

相关文章

网友评论

      本文标题:仿微博计算文字数量 适用于UITextView/UITextfi

      本文链接:https://www.haomeiwen.com/subject/sbfgnxtx.html