当前位置:  开发笔记 > IOS > 正文

如何从NSString中获取每一行?

如何解决《如何从NSString中获取每一行?》经验,为你挑选了3个好方法。

如果我有一个带有文本文件的NSString,如何获得一个NSString的NSArray,每个NSString包含一行文件.

在10.5中我这样做了:

NSArray* lines = [str componentsSeparatedByCharactersInSet: [NSCharacterSet newlineCharacterSet]];

但这在10.4中不起作用,我的程序需要在10.4中工作.

同样,它需要使用\ r,\n和\ r \n行结尾.



1> e.James..:

以下代码直接来自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



2> Vineet Choud..:

使用包含字符串中的所有行 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.6iOS 4.0以后.



3> Heng-Cheong ..:

我将首先用"\n"替换所有"\ r",然后将所有"\n \n"替换为"\n",然后执行componentsSeparatedByString:@"\n".

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有