我有一个文件,其中包含一系列由分隔符分隔的信息。所以我的分隔符(在纯文本文件)是这个样子:使用分隔符逐个解析文本文件
<start>
//some of info
<end>
我如何在文本阅读,一块一块的,基于特定的分隔符我在找? 另外,是否可以读取文件中的某个点,然后在那里暂停,因此下一次访问数据时,我从以前停止的点开始查找?
我有一个文件,其中包含一系列由分隔符分隔的信息。所以我的分隔符(在纯文本文件)是这个样子:使用分隔符逐个解析文本文件
<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类的方法。这将返回一个数组。这里有一个完整的例子:
http://pinkstone.co.uk/how-to-read-the-contents-from-a-text-file-into-an-nsstring/
该文件有多大? – user3386109
目前它只有一段文字,但在未来我计划有很多页面的数据 – crazyshark
这是在iOS上吗? – Milo