2011-10-04 72 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