在NSArray中查找相似的字符串

3

NSArray是否具有将一个数组中的字符串与另一个数组中最接近表示该字符串的元素进行匹配的功能?

例如:

NSString *search = @"apple p"; 
NSArray *array = [[NSArray alloc]initWithObjects:@"apple",@"apple pie",@"apple pies", @"apple juice", nil];

//Now we want to look for a similar string
[array ?];

期望的结果应该是:苹果派(最相似的字符串)。有什么办法可以做到这一点吗?

具有相同数量的字符,并且必须具有相同的字符序列。 - S.J. Lim
应该与上面的定义类似。 - S.J. Lim
有一些事情可以做来按“相似度”排序,然后检索出排序最高的那个。这将取决于实现符合您要求的任何类似最佳拟合算法。 - Tim Dean
1个回答

3
您可以根据相似度对数组进行排序,然后检索排序后数组中的最后一个元素:即最相似的字符串。假设您已经在NSString的类别上定义了一些方法similarityTo:,那么以下类似的代码应该可以解决问题:
NSInteger compareStrings(id a, id b, void *context) {
  int aSimilarity = [a similarityTo:(NSString *)context];
  int bSimilarity = [b similarityTo:(NSString *)context];
  return aSimilarity - bSimilarity;
}

// Retrieving the most similar string.
NSString *result = [[array sortedArrayUsingFunction:compareStrings
                                            context:search] lastObject];

看起来这是我想要的最接近的答案。 - S.J. Lim
@user868752:如果他的想法对你有帮助,请不要忘记将其标记为答案。这有助于其他人知道问题已经解决。只需检查绿色标记即可!;) - sudo rm -rf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接