从由换行符分隔的文本文件向NSMutableArray添加数据?

时间:2011-06-21 14:35:38

标签: iphone ios cocoa-touch

我有一个txt文件,其中包含一些像这样的网址

http://url1.com

http://url1.com

http://url1.com

以换行符分隔。我怎样才能将那些由换行符分隔的不同条目添加到NSMutableArray中?谢谢:))

4 个答案:

答案 0 :(得分:4)

尝试这样的事情:

NSMutableArray *txtLines = [NSMutableArray array];

[txtFile enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
    if ([line length] > 0) {
        [txtLines addObject:line];    
    }
}];

更新

@Evan是对的,以上只有在您的平台上有可用的块时才有效。围绕该代码的编译器指令应该处理这个限制,例如:

#if NS_BLOCKS_AVAILABLE

// iOS 4.0+ solution

#else

// iOS 2.0+ solution

#endif

答案 1 :(得分:2)

NSString *myListString = /* load / download file */
NSMutableArray *myList = [myListString componentsSeparatedByString:@"\n"];

如果是HTML,则可能必须使用<br/>

@ octy的解决方案仅适用于iOS 4.0或更高版本。此解决方案是iOS 2.0或更高版本。您可以查看iOS版本并选择要使用的版本:

BOOL useEnumeratedLineParsing = FALSE;
NSString *reqSysVer = @"4.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
    useEnumeratedLineParsing = TRUE;

然后检查useEnumeratedLineParsing

的值

答案 2 :(得分:2)

NSString *textFilePath = [[NSBundle mainBundle] pathForResource:@"urls" ofType:@"txt"];
NSString *fileContentsUrls = [NSString stringWithContentsOfFile:textFilePath encoding:NSUTF8StringEncoding error:nil];
NSArray *myArray = [urls componentsSeparatedByString:@"\n"];

答案 3 :(得分:0)

只要它不是超大型,您就可以将整个文件读入NSString。

NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8Encoding error:nil];

然后拆分线:

NSArray *lines = [text componentsSeparatedByString:@"\n"];

让它变得可变:

NSMutableArray *mutableLines = [lines mutableCopy];

现在,根据文本文件的来源,您可能需要更加小心。它可以由\r\n而不是\n分隔,在这种情况下,您的行将包含一堆额外的\r个字符。您可以在事后清理它,使用一些东西来删除额外的空格(您的文件也可能有空白行,上面的内容会变成空字符串)。

另一方面,如果您控制文件,则不必担心。 (但在这种情况下,为什么不读取plist而不是解析纯文本文件...)