iPhoneの単語ゲームを作っています。改行で区切られたすべての英単語を含むテキスト ファイルがあります。
有効な単語を確認する方法をいくつか試しました。SQLite データベースを使用すると、ほぼ瞬時に読み込まれますが、検索時間が長すぎます。ゲームのロード時にすべてをアレイにロードできますが、2 年前の iPod では約 7 秒かかります。検索は高速ですが。最適なバランスは、ファイル全体を にロードしNSString
て正規表現を実行することであることがわかりました。
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\n%@\n", word] options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:self.words options:0 range:NSMakeRange(0, [self.words length])];
NSLog(@"%i matches found", numberOfMatches);
ただし、これはリストがアルファベット順であるという事実を利用していません。その事実を利用して、これをどのように高速化できますか?
ひねりの 1 つは、ユーザーがワイルド文字を使用できるようにすることです。そのため、正規表現は次のようになります。@"wo.d"