从NSString更改为NSAttributedString时缺少某些方法

时间:2014-02-06 17:26:19

标签: ios objective-c nsstring nsattributedstring

嘿大家:)我有一种方法,在给定数量的单词之后剪切长文本。它看起来像这样:

NSString *trimString(NSString *string, int length, Boolean soft) {
if(string == Nil || string.length == 0){
    return string;
}

NSMutableString *sb = [[NSMutableString alloc]init];
int actualLength = length - 3;
if(string.length > actualLength){
    // -3 because we add 3 dots at the end. Returned string length has to be length including the dots.
    if(!soft) {
        [sb appendString:[string substringToIndex:actualLength - 3]];
        [sb appendString:@"..."];
        return sb;
    } else {
        NSRange r = NSMakeRange(0, actualLength);
        //NSRange range = [string rangeOfString:@" " options:NSBackwardsSearch range:r];
        NSRange range = [string rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@" \n\r\t"] options:NSBackwardsSearch range:r];
        [sb appendString:[string substringToIndex:range.location]];
        [sb appendString:@"..."];
        return sb;
    }
}
return string;
}

我的问题是我必须将所有内容更改为NSAttributedString,但是没有像“substringToIndex:”这样的东西,所以我可以改变它.... 是否有可能改变它?

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您只是寻找字符串剪辑(substringToIndex:),您可以使用:

- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange

创建适当的范围,这将为您提供“缺失”的功能。

Source.

答案 1 :(得分:1)

您可以通过引用属性字符串上的string属性对NSString支持的NSAttributedString执行任何操作。这是您可以随心所欲地执行的基础NSString。

答案 2 :(得分:1)

假设你正在使用NSMutableAttributedString,你需要在NSAttributedString的字符串属性上调用你的函数,你可以使用返回的字符串作为replaceCharactersInRange:withString:的参数

如果我是你,我会更改函数的原型以返回NSRange值,这样你就可以用更通用的方式使用它和字符串和AttributedStrings(带有stringWithRange等函数)