根据文本最大字符数进行字符串截取

来源:互联网 发布:linux svn 重试3次 编辑:程序博客网 时间:2024/05/22 19:26

最近遇见一个问题,需要限制输入文本的字符数,这时候需要对包含中英文的字符串进行截取,从而达到限制字符数的需求。所以写了个方法,记录一下。

- (NSDictionary *)getTextLength:(NSString *)text {    NSDictionary *dic = [NSDictionary dictionary];    NSInteger index = 0;    NSInteger totalLen = 0;    NSInteger maxLength = (self.limitCount == 1500)?1500:100;    BOOL isChinese = NO;    for (NSInteger i = 0; i < text.length; i++) {        NSRange range = NSMakeRange(i, 1);        NSString *subString = [text substringWithRange:range];        const char *cString = [subString UTF8String];        if (strlen(cString) == 3) {            totalLen += 3;            isChinese = YES;        } else {            totalLen++;            isChinese = NO;        }        if (totalLen > maxLength) {            index = i;            if (isChinese) {                totalLen -= 3;            } else {                totalLen--;            }            dic = @{@"totalLen": [NSNumber numberWithInteger:totalLen],                    @"index": [NSNumber numberWithInteger:index]};            break;        }    }    return dic;}
这个方法返回的字典主要包括两个,一个是截取之后的字符数,返回这个用于显示提示剩余字符数,第二个是需要截取到的位置。因为使用了UTF-8编码,所以一个中文占三个字符,如果是别的编码方式可能需要注意一下是否是三个字符。

0 0
原创粉丝点击