【发布时间】:2011-10-04 08:52:01
【问题描述】:
我从 xml 提要获得纯文本,我想知道是否有可能将该文本拆分为段落。我正在尝试:
*htmlbody = [item.text stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];
但它不起作用。
【问题讨论】:
标签: objective-c ios paragraph
我从 xml 提要获得纯文本,我想知道是否有可能将该文本拆分为段落。我正在尝试:
*htmlbody = [item.text stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];
但它不起作用。
【问题讨论】:
标签: objective-c ios paragraph
NSArray *paragraphs = [item.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
为您提供所有行终止选项的字符串数组(每段一个)。
【讨论】:
将enumerateSubstringsInRange:options:usingBlock: 与NSStringEnumerationByParagraphs 一起使用。
【讨论】:
第一种也是最常见的方法是:
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:¶Start end:¶End
contentsEnd:&contentsEnd forRange:NSMakeRange(paraEnd, 0)];
currentRange = NSMakeRange(paraStart, contentsEnd - paraStart);
[array addObject:[string substringWithRange:currentRange]];
}
这会给你一个NSString数组和你的段落
【讨论】:
听起来你走在正确的轨道上。或者至少,这肯定是我会尝试的方法。
也许您的新行包含回车,因此请尝试 \r\n 甚至可能是 \n\n 但如果没有您尝试解析的实际内容,则很难辨别您应该使用什么作为分隔符。
查看 componentsSeperatedByString 的 NSString 文档:
NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
【讨论】: