我想实现“我在 pi 中”来搜索 pi 数字中的出生日期,我在 .txt 文件中有 100 万个系列的 pi 数字,请你给我一些实现这个游戏的提示吗?
什么是最好的方法?如何在文本文件中找到我的出生日期?
提前致谢
我想实现“我在 pi 中”来搜索 pi 数字中的出生日期,我在 .txt 文件中有 100 万个系列的 pi 数字,请你给我一些实现这个游戏的提示吗?
什么是最好的方法?如何在文本文件中找到我的出生日期?
提前致谢
NSString* str = [NSString stringWithContentsOfFile: @"path to your file" encoding: NSASCIIStringEncoding error: nil];
NSRange rng = [str rangeOfString: @"1989"]; //here is the range of the birth year 1989
有一次我写了一个 NSString 类,它有方法:
- (NSArray *)occurrencesOfSubstring:(NSString *)string
{
NSMutableArray *result = [NSMutableArray array];
NSRange range = NSMakeRange(0, self.length);
NSUInteger len = self.length;
while (range.location != NSNotFound) {
range = [self rangeOfString:string options:0 range:range];
if (range.location != NSNotFound) {
NSRange resRange = range;
[result addObject:[NSValue valueWithRange:resRange]];
range = NSMakeRange(NSMaxRange(resRange), len - NSMaxRange(resRange));
}
}
return result;
}
它返回搜索的子字符串范围的数组。希望能帮助到你。
1 兆字节足够小,加载然后扫描它相当简单。如果你想稍微聪明一点,你可以将文件映射到内存中,然后通过映射扫描它(避免需要将整个文件加载到内存中,这对于数百 MB 的文件变得更加重要)。
NSDataReadingOptions options = NSDataReadingMappedIfSafe | NSDataReadingUncached;
NSData *data = [NSData dataWithContentsOfFile:filename
options:options
error:nil];
NSString *string = [[NSString alloc] initWithData:data
encoding:NSASCIIStringEncoding];
NSRange range = [string rangeOfString:year];
[string release];
您可以添加适当的错误处理。