Objective-C查找NSString中最常用的单词

sta*_*rob 7 objective-c nsdictionary nsstring

我正在尝试编写一个方法:

- (NSDictionary *)wordFrequencyFromString:(NSString *)string {}
Run Code Online (Sandbox Code Playgroud)

返回的字典将包含单词以及它们在提供的字符串中使用的频率.不幸的是,我似乎无法找到一种方法来迭代字符串中的单词来分析每一个单词 - 只有每个字符似乎比必要的工作更多.有什么建议?

Vla*_*mir 8

NSString有一个-enumerateSubstringsInRange:方法,允许直接枚举所有单词,让标准api做所有必要的东西来定义单词边界等:

[s enumerateSubstringsInRange:NSMakeRange(0, [s length])
                      options:NSStringEnumerationByWords
                   usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                       NSLog(@"%@", substring);
                   }];
Run Code Online (Sandbox Code Playgroud)

在枚举块中,您可以使用带字的NSDictionary作为键,使用NSNumber作为计数,或使用NSCountedSet为计数提供所需的功能.