按字节数截取字符串-NSString

//html是超文本,length是字节数
+ (NSAttributedString *)attributedStringWithHtml:(NSString *)html length:(CGFloat)length{
    NSAttributedString * attribute = [self attributedStringWithHtml:html];
    if (attribute && attribute.string && [attribute.string isKindOfClass:[NSString class]]) {
        CGFloat  character = 0;
        NSString *subString = attribute.string;
        //字节数
        for(int i=0; i< [subString length];i++){
            
            int a = [subString characterAtIndex:i];
            if( a >= 0x4e00 && a <= 0x9fa5){ //判断是否为中文
                character +=2;
            }else{//是否是大小写字母,是否是阿拉伯数字,是否是这几个特殊符号
                if ((isalpha(a))||(isalnum(a))||((a=='_'))||(a=='@')||(a=='.')||(a=='-')) {
                    character+=1;
                }else{
                    if (isascii(a)) {//是否是ASCII码
                        character +=1;
                    }else{//是中文字符
                        character +=2;
                    }
                }
            }
            if (character > length) {//按字数截取
                if (character == length) {
                      subString = [subString substringToIndex:i+1];
                }else{
                     subString = [subString substringToIndex:i];
                }
              //超出的部分用...代替
                subString = [subString stringByAppendingString:@"..."];
                attribute = [self attributedStringWithHtml:subString];
                break;
            }
        }
    }
    return attribute;
}

  如果是字符串的话,直接修改下方法传入字符串

猜你喜欢

转载自www.cnblogs.com/TheYouth/p/9259513.html