我正在创建一个游戏,并且已经到了我要查找字符串的位置,看看它们是否确实是我要导入的words.txt文件中定义的单词。
我对目标C / IOS中的文件IO知之甚少,搜索让我与sqlite和Lucene有关。
用于确认字符串的简单字典查找的最佳方法是什么是来自words.txt的实际字典单词?
答案 0 :(得分:0)
这与sqlite没有任何关系,除非你把文件保存在sqlite数据库中,你没有提到。做你想做的最快的方法是:
将文件加载到内存中(除非这是一个你不想一次加载的大文件,在这种情况下使用NSFileHandle):
NSError* err;
NSString* words = [NSString stringWithContentsOfFile:@"words.txt" encoding:NSUTF8StringEncoding error:&err];
// check err!
if (err) {
// handle errors
}
将单词转移到集合,例如NSArray的实例。我们假设文件中的单词由逗号分隔:
NSArray* wordsArray = [words componentsSeparatedByString:@","];
检查您的单词是否在数组中:
NSString* wordWeLookFor = @"FooBar";
NSUInteger index = [wordsArray indexOfObjectPassingTest:
^(id obj, NSUInteger idx, BOOL *stop) {
*stop = [(NSString*)obj isEqualToString:wordWeLookFor]
return *stop;
}];
if (index != NSNotFound) {
// Found!
} else {
// Not found!
}
我认为你想避免复合词的可能问题,这就是为什么第2步和第3步是必要的。如果您的文件中没有太多单词并且您感到幸运,则可以使用rangeOfString方法并跳过步骤2和3。