在NSArray中查找类似的字符串

时间:2011-08-12 00:01:38

标签: objective-c

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 ?];

理想的结果应该是:苹果派(最相似的字符串)。有什么想法可以做到吗?

1 个答案:

答案 0 :(得分:3)

您可以根据相似性对数组进行排序,然后检索已排序数组中的最后一个元素:最相似的字符串。假设您已在similarityTo:的某个类别中定义了某个方法NSString,则可能会出现以下情况:

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];