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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!