如果我有一个带有文本文件的NSString,如何获得一个NSString的NSArray,每个NSString包含一行文件.
在10.5中我这样做了:
NSArray* lines = [str componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];
但这在10.4中不起作用,我的程序需要在10.4中工作.
同样,它需要使用\ r,\n和\ r \n行结尾.
以下代码直接来自Apple关于段落和换行符的文档:
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]]; }
我不是100%肯定它是否适用于10.4
使用包含字符串中的所有行 enumerateLinesUsingBlock:
[yourString enumerateLinesUsingBlock:^(NSString * _Nonnull line, BOOL * _Nonnull stop) { //line }];
宣言
- (void)enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block参数
block
为枚举执行的块.该块有两个参数:
line
枚举字符串的当前行.该行仅包含该行的内容,没有行终止符.
stop
块的可用于通过设置*stop = YES来停止枚举的布尔值的引用; 它不应该触摸*否则停止.可用性可用的
OS 10.6
和iOS 4.0
以后.
我将首先用"\n"替换所有"\ r",然后将所有"\n \n"替换为"\n",然后执行componentsSeparatedByString:@"\n".