可能重复:
How to generate all of the numbers of pi in Objective-C
我想实现“我在pi中”搜索pi数字中的出生日期, 我在.txt文件中有100万个pi数字序列,请你给我一些实现这个游戏的提示吗?
最好的方法是什么?我怎样才能在文本文件中找到我的出生日期?
提前致谢
答案 0 :(得分:2)
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
答案 1 :(得分:0)
1兆字节足够小,加载然后扫描它是相当简单的。如果你想变得有点聪明,可以将文件映射到内存中,然后通过映射进行扫描(避免将整个文件加载到内存中,这对于数百MB文件来说更为重要)。 p>
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];
您可以添加适当的错误处理。
答案 2 :(得分:0)
一旦我写了一个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;
}
返回搜索的子字符串范围的数组。希望它有所帮助。