-2

重複の可能性:
Objective-Cですべての円周率を生成する方法

誕生日をpi番号で検索するために「amiinpi」を実装したいのですが、.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

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 に答える
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 に答える