我有一個文件,其中包含一系列由分隔符分隔的信息。所以我的分隔符(在純文本文件)是這個樣子:使用分隔符逐個解析文本文件
<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