使用.txt文件匹配单词

时间:2012-03-15 17:08:26

标签: ios sql

我正在创建一个游戏,并且已经到了我要查找字符串的位置,看看它们是否确实是我要导入的words.txt文件中定义的单词。

我对目标C / IOS中的文件IO知之甚少,搜索让我与sqlite和Lucene有关。

用于确认字符串的简单字典查找的最佳方法是什么是来自words.txt的实际字典单词?

1 个答案:

答案 0 :(得分:0)

这与sqlite没有任何关系,除非你把文件保存在sqlite数据库中,你没有提到。做你想做的最快的方法是:

  1. 将文件加载到内存中(除非这是一个你不想一次加载的大文件,在这种情况下使用NSFileHandle):

    NSError* err;
    NSString* words = [NSString stringWithContentsOfFile:@"words.txt" encoding:NSUTF8StringEncoding error:&err];
    // check err!
    if (err) {
        // handle errors
    }
    
  2. 将单词转移到集合,例如NSArray的实例。我们假设文件中的单词由逗号分隔:

    NSArray* wordsArray = [words componentsSeparatedByString:@","];
    
  3. 检查您的单词是否在数组中:

    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!
    }
    
  4. 我认为你想避免复合词的可能问题,这就是为什么第2步和第3步是必要的。如果您的文件中没有太多单词并且您感到幸运,则可以使用rangeOfString方法并跳过步骤2和3。