嘿大家:)我有一种方法,在给定数量的单词之后剪切长文本。它看起来像这样:
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:”这样的东西,所以我可以改变它.... 是否有可能改变它?
谢谢!
答案 0 :(得分:1)
如果您只是寻找字符串剪辑(substringToIndex:
),您可以使用:
- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange
创建适当的范围,这将为您提供“缺失”的功能。
答案 1 :(得分:1)
您可以通过引用属性字符串上的string
属性对NSString支持的NSAttributedString执行任何操作。这是您可以随心所欲地执行的基础NSString。
答案 2 :(得分:1)
假设你正在使用NSMutableAttributedString,你需要在NSAttributedString的字符串属性上调用你的函数,你可以使用返回的字符串作为replaceCharactersInRange:withString:
的参数
如果我是你,我会更改函数的原型以返回NSRange值,这样你就可以用更通用的方式使用它和字符串和AttributedStrings(带有stringWithRange
等函数)