2011-10-04 83 views
2

我从xml提要中获得纯文本,我想知道是否有可能将文本拆分为段落。我试图:将NSStrings划分为段落

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

但它不起作用。

回答

1

第一和最常见的方法是:

NSArray *arr = [myString componentsSeparatedByString:@"\n"]; 

然而,这忽略了一个事实,有许多其它方式 其中段落或换行符可以以字符串表示 - \ r, \ r \ n或Unicode分隔符。

从苹果公司的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数组与段落

0

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

也许你的新行包含回车,所以试试\ r \ n甚至可能\ n \ n但没有你想要解析的实际内容很难辨别你应该用作分隔符。

看一看NSString的文档componentsSeperatedByString:

NSString *list = @"Norman, Stanley, Fletcher"; 
NSArray *listItems = [list componentsSeparatedByString:@", "]; 
4
NSArray *paragraphs = [item.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 

给你字符串的所有线路终端选项数组(每个段落之一)。

3

使用enumerateSubstringsInRange:options:usingBlock:NSStringEnumerationByParagraphs