iOS 模糊、精确搜索匹配功能方法总结 By HL

字符串搜索主要用于UITableView的搜索功能的筛选,过滤,查询

下面是一些流行的搜索查询方法

一.遍历搜索

for循环

根据要求:精确搜索(判读字符串相等)   模糊搜索(字符串包含)

相关知识点

在一个字符串中搜索子字符串 rangeOfString

NSString *str1 = @"can you stest speak English";
NSString *str = @"stest";
//在str1这个字符串中搜索stest,推断有没有
if ([str1 rangeOfString:str].location != NSNotFound) {
    NSLog(@"这个字符串中有stest");
}

rangeOfString 前面的參数是要被搜索的字符串,后面的是要搜索的字符
NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib."; 
NSRange range = [searchText rangeOfString:@"(?:[^,])*\." options:NSRegularExpressionSearch]; 
if (range.location != NSNotFound) { 
    NSLog(@"%@", [searchText substringWithRange:range]); 
}

8.0 之后,新出了一个方法:containsString

NSString *str1 = @"can you 
 speak English";  
    NSString *str = @"
";  
    //在str1这个字符串中搜索
,判断有没有  
    if ([str1 containsString:str]) {  
        NSLog(@"这个字符串中有
");  
    }  

示例:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    [self searchWithText:searchText];
}
// NSLiteralSearch 区分大小写(完全比较)
// NSCaseInsensitiveSearch 不区分大小写 - (void)searchWithText:(NSString *)text { NSString *searchText=text; if (searchText.length>0) { _searching=YES; [copyArray removeAllObjects]; for (NSString *tempStr in sourceArray) { NSRange titleResult=[tempStr rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (titleResult.length>0) { [copyArray addObject:tempStr]; } } } }

二.谓词搜索

(用NSPredicate类写的一些搜索方法,比for循环快并且性能消耗很低。)

OC学习篇之---谓词(NSPredicate)

NSPredicate 谓词总结 数组过滤 模糊匹配

iOS开发_常用的正则表达

iOS_正则表达式

第三方库

SearchCoreTest

一个联系人搜索库,支持的搜索方式包括:用户名汉字、拼音及模糊搜索,号码搜索,最重要的是支持T9搜索,很赞。

UTPinYinHelper

 

通过拼音去匹配汉字,简单来说,就是拼音搜索
示例:
原文地址:https://www.cnblogs.com/sixindev/p/4736343.html