Xcode 使用分隔符逐段剖析文本文件
我有一个文件,其中包含一组由分隔符分隔的信息。因此,纯文本文件中的分隔符如下所示:Xcode 使用分隔符逐段剖析文本文件,xcode,file-io,delimited-text,Xcode,File Io,Delimited Text,我有一个文件,其中包含一组由分隔符分隔的信息。因此,纯文本文件中的分隔符如下所示: <start> //some of info <end> 如何根据我正在寻找的某些分隔符,逐段阅读文本? 此外,是否可以读取到文件中的某个点,并在该点暂停,以便下次访问数据时,我从先前停止的点开始查看?假设文件足够小,可以放入内存(例如5MB或更低),可以使用stringWithContentsOfFile方法将文件读入NSString,然后用NSScanner解析字符串。NSSc
<start>
//some of info
<end>
如何根据我正在寻找的某些分隔符,逐段阅读文本?
此外,是否可以读取到文件中的某个点,并在该点暂停,以便下次访问数据时,我从先前停止的点开始查看?假设文件足够小,可以放入内存(例如5MB或更低),可以使用stringWithContentsOfFile方法将文件读入NSString,然后用NSScanner解析字符串。NSScanner将跟踪字符串中的当前位置,您可以使用scanLocation查询该位置。也可以使用setScanLocation方法修改扫描位置。下面是一些示例代码,帮助您开始使用NSScanner。代码只是在输入中查找标记,并使用NSLog打印它找到的任何标记
- (void)scandemo
{
NSString *input = @"<start>\n//some of info\n<end>";
NSString *tagName;
NSScanner *scanner = [NSScanner scannerWithString:input];
for (;;)
{
// find the opening bracket
[scanner scanUpToString:@"<" intoString:NULL];
if ( [scanner isAtEnd] )
break;
// swallow the < character
if ( ![scanner scanString:@"<" intoString:NULL] )
break;
// find the closing bracket, and print out the tag
if ( [scanner scanUpToString:@">" intoString:&tagName] )
NSLog( @"found tag <%@>", tagName );
if ( [scanner isAtEnd] )
break;
}
}
除了使用NSScanner,您还可以使用名为contentsSeparatedByString的NSString类的方法。这将返回一个数组。下面是一个完整的示例:
目前,它只有大约一段文字,但在未来,我计划在它有很多页的数据