字符串搜索主要用于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 \n speak English";
NSString *str = @"\n";
//在str1这个字符串中搜索\n,判断有没有
if ([str1 containsString:str]) {
NSLog(@"这个字符串中有\n");
}

示例:

- (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 谓词总结 数组过滤 模糊匹配

第三方库

SearchCoreTest

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

UTPinYinHelper

通过拼音去匹配汉字,简单来说,就是拼音搜索
示例:

iOS 模糊、精确搜索匹配功能方法总结 By HL的更多相关文章

  1. 基于Vuejs的搜索匹配功能

    最近一直在看vue,查了很多资料,看了很多文档和博客,大概半知半解了,然后利用所理解的知识写了一个简单的搜索匹配功能. 大概长这个样子:   <!DOCTYPE html> <htm ...

  2. HTML5 JS实现搜索匹配功能

    http://www.codefans.net/jscss/code/4830.shtml <!DOCTYPE html><head><title>jQuery实现 ...

  3. IOS - 常用宏定义和功能方法

    可能不定期添加新的东西 github地址:https://github.com/yuqingzhude/CommonUseDemo /************************Tools**** ...

  4. DevExpress.LookUpEdit控件实现自动搜索定位功能 兼使用方法(looUpEdit可编辑)

    DevExpress.LookUpEdit 使用方法 设置可手动输入 this.LookUpEdit1.Properties.TextEditStyle = DevExpress.XtraEditor ...

  5. Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能

    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...

  6. spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法

    spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...

  7. ES中文分词器之精确短语匹配(解决了match_phrase匹配不全的问题)

    分词器选择 调研了几种分词器,例如IK分词器,ansj分词器,mmseg分词器,发现IK的分词效果最好.举个例子: 词:<<是的>><span>哈<\span ...

  8. iOS蓝牙BLE4.0通信功能

    概述 iOS蓝牙BLE4.0通信功能,最近刚学的苹果,为了实现蓝牙门锁的项目,找了一天学习了下蓝牙的原理,亲手测试了一次蓝牙的通信功能,结果成功了,那么就把我学习的东西分享一下. 详细 代码下载:ht ...

  9. solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能

    首先看一下从淘宝输入搜索keyword获取到的一些数据信息: 第一张:使用拼音的全程来查询 能够看到提示的是匹配的转换的拼音的方式,看最后一个提示项 这里另一个在指定分类文件夹下搜索的功能,难道后台还 ...

随机推荐

  1. docker学习:docker命令

    帮助命令 自验证 docker version 详情信息 docker info 获取帮助 docker --help 镜像命令 列出本例主机上的镜像 docker images [OPTIONS] ...

  2. 分享一款开源堡垒机-jumpserver

    本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...

  3. 初识python:格式化输出

    使用input函数输入用户值,再使用三种方法格式化输出. #!/user/bin env python # author:Simple-Sir # 20180831 # 格式化输出: name = i ...

  4. MySQL删除数据库或表(DROP DATABASE/table语句)

    DROP DATABASE [ IF EXISTS ] <数据库名> DROP table[ IF EXISTS ] <数据库表名> 语法说明如下: <数据库名>: ...

  5. Tomcat8/9的catalina.out中文乱码问题解决

    OS: Red Hat Enterprise Linux Server release 7.8 (Maipo) Tomcat: 9 中文显示为???问号 在$CATALINA_HOME/conf下的l ...

  6. js字符串数组['1','2','3']转number

    let arr = ['1','2','3']; arr.split(',').map(Number);

  7. Spring循环依赖原理

    Spring循环依赖的原理解析 1.什么是循环依赖? ​ 我们使用Spring的时候,在一个对象中注入另一个对象,但是另外的一个对象中也包含该对象.如图: 在Student中包含了teacher的一个 ...

  8. 返回值List是JsonArray

    MyController中: index.jsp中

  9. 一个简单的javaweb项目模板

    Controller包:表现层(视图)层.用来显示数据和接收用户数据 Service包:业务逻辑层,用来处理页面.先写接口,后写实现类 Dao包:持久层(数据访问层).用来操作数据库 其中Dao包处于 ...

  10. ajaxl利用json 传送数据的 三种提交方式?

    一.在servlet类中添加几个javabean对象,放置数据. package com.aaa.servlet; import java.io.IOException; import java.ut ...