iOS 模糊、精确搜索匹配功能方法总结 By HL
字符串搜索主要用于UITableView的搜索功能的筛选,过滤,查询
下面是一些流行的搜索查询方法
一.遍历搜索
for循环
根据要求:精确搜索(判读字符串相等) 模糊搜索(字符串包含)
相关知识点
在一个字符串中搜索子字符串 rangeOfString
1 2 3 4 5 6 | NSString *str1 = @ "can you stest speak English" ; NSString *str = @ "stest" ; //在str1这个字符串中搜索stest,推断有没有 if ([str1 rangeOfString:str].location != NSNotFound ) { NSLog (@ "这个字符串中有stest" ); } |
rangeOfString 前面的參数是要被搜索的字符串,后面的是要搜索的字符
NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在
1 2 3 4 5 | 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
1 2 3 4 5 6 | NSString *str1 = @ "can you \n speak English" ; NSString *str = @ "\n" ; //在str1这个字符串中搜索\n,判断有没有 if ([str1 containsString:str]) { NSLog (@ "这个字符串中有\n" ); } |
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | - ( void )searchBar:(UISearchBar *)searchBar textDidChange:( NSString *)searchText { [ self searchWithText:searchText]; }<br> // NSLiteralSearch 区分大小写(完全比较)<br>// 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循环快并且性能消耗很低。)
第三方库
一个联系人搜索库,支持的搜索方式包括:用户名汉字、拼音及模糊搜索,号码搜索,最重要的是支持T9搜索,很赞。
通过拼音去匹配汉字,简单来说,就是拼音搜索
示例:
作者:SIBU iOS DEV
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步