从NSAttributedString中提取最后50行

时间:2013-07-01 19:17:51

标签: ios split nsmutableattributedstring

是否有一种简单的方法来分割NSAttributedString所以我只得到最后 50个左右的行?

NSMutableAttributedString *resultString = [receiveView.attributedText mutableCopy];
[resultString appendAttributedString:[ansiEscapeHelper attributedStringWithANSIEscapedString:message]];
if ([[resultString.string componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] count]>50) {
    //resultString = [resultString getLastFiftyLines];
}

2 个答案:

答案 0 :(得分:3)

  

是否有一种简单的方法来分割NSAttributedString,所以我只得到最后50行?

没有。您必须请求string并确定您感兴趣的范围,然后使用NSAttributedString等API创建源自源的新- [NSAttributedString attributedSubstringFromRange:]代表:

- (NSAttributedString *)lastFiftyLinesOfAttributedString:(NSAttributedString *)pInput
{
  NSString * string = pInput.string;
  NSRange rangeOfInterest = ...determine the last 50 lines in "string"...;
 return [pInput attributedSubstringFromRange:rangeOfInterest];
}

答案 1 :(得分:2)

您可以使用AttributedString的子串方法:

if ([resultString length]>50) {
  resultString = [resultString attributedSubstringFromRange:NSMakeRange(0, 50)];
}

NSMakeRange - 0告诉我们从哪里开始,50是子串的长度