我想在其中搜索包含字符串的数组。因此我使用搜索栏。 这是我的代码:
for(NSString *string in itemsArray)
{
NSRange nameRange = [string rangeOfString:text options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound)
{
[filteredItemsArray addObject:string];
}
}
它工作得很好,但问题是它只是在我以完全相同的方式写入时找到字符串(除了不区分大小写)。 但即使字符串不符合100%,我也想找到它。例如,当我搜索'Ralle Turner'时,它也应该找到带有'Ralle / Ralph Turner'的字符串。
感谢您的帮助!
答案 0 :(得分:0)
您需要将搜索字符串拆分为单词,然后遍历每个单词以查找匹配项。
您可以在循环中使用此代码分割字符串
for(NSString *string in itemsArray)
{
NSArray *words = [text componentsSeparatedByString:@" "];
for (NSString *word in words)
{
NSRange nameRange = [string rangeOfString:word options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound)
{
[filteredItemsArray addObject:string];
break;
}
}
}
答案 1 :(得分:0)
您可以计算两个字符串的levenshtein distance以查看是否存在潜在匹配。 您可以在Web上轻松找到一些实现,例如: