我正在制作一个 iPhone 文字游戏。我有一个文本文件,其中包含用换行符分隔的每个英文单词。
我尝试了几种检查有效单词的方法。使用 SQLite 数据库几乎可以立即加载,但搜索时间太长。我可以在游戏加载时将所有内容加载到数组中,但在使用两年的 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);
但是,这并没有利用列表按字母顺序排列的事实。我怎样才能利用这一事实来加快速度?
一个转折是我允许人们使用通配符,所以正则表达式可能看起来像:@"wo.d"