在文本文件objective-c中查找数字

时间:2012-10-23 14:43:07

标签: objective-c ios cocoa-touch file parsing

  

可能重复:
  How to generate all of the numbers of pi in Objective-C

我想实现“我在pi中”搜索pi数字中的出生日期, 我在.txt文件中有100万个pi数字序列,请你给我一些实现这个游戏的提示吗?

最好的方法是什么?我怎样才能在文本文件中找到我的出生日期?

提前致谢

3 个答案:

答案 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;
}

返回搜索的子字符串范围的数组。希望它有所帮助。

相关问题