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类的方法。这将返回一个数组。下面是一个完整的示例:


目前,它只有大约一段文字,但在未来,我计划在它有很多页的数据