2011-08-12 36 views
3

NSArray能否將數組中的字符串與另一個數組中字符串的最接近的表示進行匹配?在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 ?]; 

期望的結果應該是:蘋果餡餅(最相似字符串)。任何想法如何做到這一點?

+4

你如何定義相似? –

+0

相同數量的字符,並且必須具有相同的字符序列。 –

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

這是個好主意。 –

+0

它看起來像我想要的最接近的答案。 –

+0

謝謝你的幫助。 –