【问题标题】:Missing some Methods when change from NSString to NSAttributedString从 NSString 更改为 NSAttributedString 时缺少一些方法
【发布时间】:2014-02-06 17:26:18
【问题描述】:

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

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:”这样的东西,所以我可以更改它...... 甚至可以改变它吗?

谢谢!

【问题讨论】:

  • 可以使用 NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString: string];

标签: ios objective-c nsstring nsattributedstring


【解决方案1】:

您可以通过引用属性字符串上的string 属性来对 NSString 支持的 NSAttributedString 执行任何操作。这是底层的 NSString,你可以随心所欲地使用它。

【讨论】:

  • 感谢您的提示 :)
  • 但要记住,字符串属性没有来自 NSAttributedString 的属性。
【解决方案2】:

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

- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange

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

Source.

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 咳嗽 mutableString,如果他想变异的话。属性将被正确处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2015-11-14
    相关资源
    最近更新 更多