Ищите похожие строки в NSArray - PullRequest
3 голосов
/ 12 августа 2011

Имеет ли 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 Ответ

3 голосов
/ 12 августа 2011

Вы можете отсортировать массив на основе сходства, а затем извлечь последний элемент в отсортированном массиве: наиболее похожую строку.Предполагая, что вы определили некоторый метод 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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...