将NSStrings划分为段落

时间:2011-10-04 08:52:02

标签: objective-c ios paragraph

我从xml feed获取纯文本,我想知道是否有可能将该文本拆分成段落。我在尝试:

*htmlbody = [item.text stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"]; 

但它不起作用。

4 个答案:

答案 0 :(得分:5)

NSArray *paragraphs = [item.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

为所有行终止选项提供一个字符串数组(每个段落一个)。

答案 1 :(得分:3)

enumerateSubstringsInRange:options:usingBlock:NSStringEnumerationByParagraphs一起使用。

答案 2 :(得分:1)

第一种也是最常见的方法是:

NSArray *arr = [myString componentsSeparatedByString:@"\n"];
  然而,这忽略了存在许多其他方式的事实   其中段落或换行符可以用字符串表示 - \ r,   \ r \ n,或Unicode分隔符。

来自Apple的String Programming Guide

    NSString *string = /* assume this exists */;
    unsigned length = [string length];
    unsigned paraStart = 0, paraEnd = 0, contentsEnd = 0;
    NSMutableArray *array = [NSMutableArray array];
    NSRange currentRange;
    while (paraEnd < length) {
        [string getParagraphStart:&paraStart end:&paraEnd
                      contentsEnd:&contentsEnd forRange:NSMakeRange(paraEnd, 0)];
        currentRange = NSMakeRange(paraStart, contentsEnd - paraStart);
        [array addObject:[string substringWithRange:currentRange]];
    }

这将为您提供一系列NSString段落

答案 3 :(得分:0)

听起来你走在正确的轨道上。或者至少,这肯定是我会尝试的方法。

也许你的新行包含回车符,所以尝试\ r \ n或者甚至可能\ n \ n但是如果没有你试图解析它的实际内容,很难分辨出你应该使用什么作为分隔符。

查看componentsSeperatedByString的NSString文档:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];