-2

可能重复:
如何在 Objective-C 中生成 pi 的所有数字

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

什么是最好的方法?如何在文本文件中找到我的出生日期?

提前致谢

4

3 回答 3

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
于 2012-10-23T14:52:15.240 回答
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;
}

它返回搜索的子字符串范围的数组。希望能帮助到你。

于 2012-10-23T15:30:42.207 回答
0

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];

您可以添加适当的错误处理。

于 2012-10-23T15:03:19.793 回答