NSPredicate 谓词总结 数组过滤 模糊匹配
NSPredicate 用于指定过滤条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配。
- 1.创建NSPredicate(相当于创建一个过滤条件)
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"过滤条件"];
- 2.判断指定的对象是否满足NSPredicate创建的过滤条件
- [predicate evaluateWithObject:person];
- 3.过滤出符合条件的对象(返回所有符合条件的对象)
- NSArray *persons = [array filteredArrayUsingPredicate:predicate];
- 1.先创建一个person对象
- @interface Person: NSObject{
- NSString *name;
- int age;
- }
- 2.创建一个数组,在数组种加入多个person对象
- NSArray *array=[NSArray arrayWithObjects:person1,person2,person3,person4,...,nil];
- 3.使用NSPredicate来过滤array内的person
- a.找出array种age小于20的person
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age < 20"];
- for(Person *person in array){
- if([predicate evaluateWithObject:person]){ //判断指定的对象是否满足
- //........................
- }
- }
- NSArray *persons = [array filteredArrayUsingPredicate:predicate];//获取所有age小于20的person
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age > 20"];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name > 'abc' && age > 10"];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name > 'abc' OR age > 10"];
- <span style="font-family: Arial, Helvetica, sans-serif;"></span><p class="p1">
- </p>
2.IN
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name IN {'abc' , 'def' , '123'}"];
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'N'"];//name以N打头的person
- </pre>4.以xx结尾--endswith</div><div></div><div><pre code_snippet_id="163702" snippet_file_name="blog_20140120_8_9862346" name="code" class="objc">NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'N'"];//name以N结尾的person
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'N'"]; <span style="font-family: Arial, Helvetica, sans-serif;">//name种包含'N的person</span>
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name LIKE '*N*'"];//<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14.44444465637207px; line-height: 26px;">*表示零个或多个字符</span>
- NSArray *array=[NSArray arrayWithObjects: @"abc", @"def", @"ghi",@"jkl", nil nil];
- NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF=='abc'"];
- NSArray *array2 = [array filteredArrayUsingPredicate:pre];
8.正则表达式
- (8.) 正则表达式:
- NSPredicate 使用MATCHES 匹配正则表达式,正则表达式的写法采用international components
- for Unicode (ICU)的正则语法。
- 例:
- NSString *regex = @"^A.+e$";//以A 开头,以e 结尾的字符。
- NSPredicate *pre= [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
- if([pre evaluateWithObject: @"Apple"]){
- printf("YES\n");
- }else{
- printf("NO\n");
- }
NSPredicate 谓词总结 数组过滤 模糊匹配的更多相关文章
- php 数组模糊匹配
php 数组模糊匹配: $list = array(); // 匹配后的结果 $arr = array("abcd","abef","efgh&quo ...
- EasyUI combobox下拉列表实现搜索过滤(模糊匹配)
项目中的某个下拉列表长达200多个项,这么巨大的数量一个一个找眼镜都得看花,于是就得整了个搜索功能.看网上别人帖子有只能前缀匹配的方案,但只能前缀匹配的话用起来也不是很方便.于是就记录一下模糊匹配的方 ...
- IOS开发之NSPredicate谓词的用法
编程的人员不管是上过大学还是从培训机构出来的或做后台的.前端的都应该SQL语句有所了解,我们知道,在SQL语句当中 where 条件表达式可以对二维关系表的数据做条件筛选.微软的C# .net中也实现 ...
- NSPredicate谓词
NSPredicate——谓词(is) 作用:判断条件表达式的求值返回真或假的过程 使用步骤: . 定义NSPredicate对象并指定条件 . 调用谓词的evaluateWithObject方法判断 ...
- iOS NSArray数组过滤
需求:在一个数组里面,将在这个数组中的并且在另一个数组里面的元素过滤掉. 即:在一个数组dataArray里面,将在dataArray数组中的并且在filteredArray数组里面的元素过滤掉. / ...
- 1035-Spell checker(模糊匹配)
一,题意: 给出一组字典的单词,以'#'结束,之后给出一组要执行模糊匹配的单词序列,以'#'结束 1,若某个单词能在字典中找到,则输出corret 2,若某个单词能通过 变换 或 删除 或 添加一个字 ...
- es 基于match_phrase的模糊匹配原理及使用
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会遇到类似数据库的"like"的模糊匹配需求 ...
- JPQL模糊匹配单个字符
JPQL模糊匹配,不是%,而是单个字符,该怎么办?比如我要查出数据库中满足后三位是数字的字符串 对于mysql来说,使用通配符 %和_可以轻松解决,但是对于JPQL来说模糊查询就伤脑筋了... 有一个 ...
- DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案
本方案不需要修改控件源码,是完美解决cxgrid或TcxDBExtLookupComboBox支持多列模糊匹配快速输入的最佳方案!! 转自https://blog.csdn.net/qq5643020 ...
随机推荐
- matlab求矩阵、向量的模
求矩阵的模: function count = juZhenDeMo(a,b) [r,c] = size(a);%求a的行列 [r1,c1] = size(b);%求b的行列 count = 0; f ...
- 斯特林数(Stirling number)
在组合数学,Stirling 数可指两类数,第一类Stirling 数和第二类 Stirling 数,都是由18世纪数学家 James Stirling 提出的. Stirling 数有两种,第一类和 ...
- 基于js的地理数据的几何运算turfjs
Doc: http://turfjs.org/static/docs/global.html Openlayers3 Sample: http://jsfiddle.net/d6o81vc7/
- 【Foreign】朗格拉日计数 [暴力]
朗格拉日计算 Time Limit: 10 Sec Memory Limit: 128 MB Description Input Output 仅一行一个整数表示答案. Sample Input 5 ...
- 【Foreign】猜测 [费用流]
猜测 Time Limit: 10 Sec Memory Limit: 256 MB Description Input Output Sample Input 3 1 1 1 2 2 1 Samp ...
- COGS2642 / Bzoj4590 [Shoi2015]自动刷题机
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 906 Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了 ...
- codechef T4 IPC Trainers
IPCTRAIN: 训练营教练题目描述 本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练.训练营的日 程安排有 M 天,每天最多上一节课.第 i 名教练 ...
- Python爬虫学习 - day1 - 爬取图片
利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...
- python 列表表达式、生成器表达式和协程函数
列表表达式.生成器表达式和协程函数 一.列表表达式: 常规方式示例: egg_list=[] for i in range(100): egg_list.append("egg%s" ...
- Git服务器安装详解及安装遇到问题解决方案【转】
转自:http://www.cnblogs.com/grimm/p/5368777.html git是一个不错的版本管理的工具.现在自己在搞一个简单的应用程序开发,想使用git来进行管理.在Googl ...