我有一个txt文件,其中包含一些像这样的网址
以换行符分隔。我怎样才能将那些由换行符分隔的不同条目添加到NSMutableArray中?谢谢:))
答案 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
而不是解析纯文本文件...)