Nsstring *text = @"devZhang";
// BEGINSWITH:检查某个字符串是否以指定的字符串开头(如判断字符串是否以a开头:BEGINSWITH 'a')
nspredicate *predicate = [nspredicate predicateWithFormat:@"SELF BEGINSWITH 'd'"];
NSLog(@"%@ beginWith d: %d",text,[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.384 Demonspredicate[2472:315182] devZhang beginWith d: 1
// ENDSWITH:检查某个字符串是否以指定的字符串结尾
predicate = [nspredicate predicateWithFormat:@"SELF ENDSWITH 'a'"];
NSLog(@"%@ endWith a: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.384 Demonspredicate[2472:315182] devZhang endWith a: 0
// CONTAINS:检查某个字符串是否包含指定的字符串
predicate = [nspredicate predicateWithFormat:@"SELF CONTAINS 'evZ'"];
NSLog(@"%@ 包含 evZ: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.384 Demonspredicate[2472:315182] devZhang 包含 evZ: 1
// LIKE:检查某个字符串是否匹配指定的字符串模板。其之后可以跟?代表一个字符和*代表任意多个字符两个通配符。比如"name LIKE '*ac*'",这表示name的值中包含ac则返回YES;"name LIKE '?ac*'",表示name的第2、3个字符为ac时返回YES。
predicate = [nspredicate predicateWithFormat:@"SELF LIKE '?evZ*g'"];
NSLog(@"%@ like ?evZ*g: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.384 Demonspredicate[2472:315182] devZhang like ?evZ*g: 1
// MATCHES:匹配,即检查某个字符串是否匹配指定的正则表达式。虽然正则表达式的执行效率是最低的,但其功能是最强大的,也是我们最常用的。
// 判断字符串是否以d字符开头,g字符结尾
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^d.+g$'"];
NSLog(@"%@ match d开头/g结尾: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.385 Demonspredicate[2472:315182] devZhang match d开头/g结尾: 1
// 判断字符串是否为1~20位的字母字符串(没有位数限制时,可写成"[a-zA-Z]{1,}",或"[a-zA-Z]+")
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '[a-zA-Z]{1,20}'"];
NSLog(@"%@ match 1~20位字母: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.385 Demonspredicate[2472:315182] devZhang match 1~20位字母: 1
// 判断字符串是否以下划线开头包含数字和字母的6~12位
text = @"_168devZhang";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^_+[0-9]+[a-zA-Z]{6,12}'"];
NSLog(@"%@ match 下划线开头+数字+字母+6~12位: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.385 Demonspredicate[2472:315182] _168devZhang match 下划线开头+数字+字母+6~12位: 1
// 判断字符串长度
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '([a-zA-Z0-9._&*]{8,16})'"];
NSLog(@"%@ match 8~16位: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.385 Demonspredicate[2472:315182] _168devZhang match 8~16位: 1
// 判断数字带两位小数
text = @"123.22";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^[0-9]+(.[0-9]{2})'"];
NSLog(@"%@ match 数字带两位小数: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.386 Demonspredicate[2472:315182] 123.22 match 数字带两位小数: 1
 
 
/**
     * 手机号码
     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通:130,131,132,152,155,156,185,186
     * 电信:133,1349,153,180,189
     */
text = @"13511113244";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^1(34[0-8]|(3[5-9]|5[017-9]|8[278]))[0-9]{8}$|^1(3[0-2]|5[256]|8[56])[0-9]{8}$|^1(33|53|8[09])[0-9]{8}|^1(349)[0-9]{7}'"];
NSLog(@"%@ match 手机号码: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.386 Demonspredicate[2472:315182] 13511113244 match 手机号码: 1
// 中国移动:134[0-8],188
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^1(34[0-8]|(3[5-9]|5[017-9]|8[278]))[0-9]{8}$'"];
NSLog(@"%@ match 中国移动手机号码: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.386 Demonspredicate[2472:315182] 13511113244 match 中国移动手机号码: 1
// 中国联通:130,186
text = @"18555551155";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^1(3[0-2]|5[256]|8[56])[0-9]{8}$'"];
NSLog(@"%@ match 中国联通手机号码: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.386 Demonspredicate[2472:315182] 18555551155 match 中国联通手机号码: 1

// 中国电信:133,189
text = @"13498161155";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^1(33|53|8[09])[0-9]{8}|^1(349)[0-9]{7}'"];
NSLog(@"%@ match 中国电信手机号码: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.386 Demonspredicate[2472:315182] 13498161155 match 中国电信手机号码: 1
/**
     * 大陆地区固话及小灵通
     * 区号:010,020,021,022,023,024,025,027,028,029,0755,0753,……
     * 号码:七位或八位
     */
text = @"075522222222";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '^0(10|2[05789])[1-9]{8}|^0[0-9]{3}[0-9]{7,8}'"];
NSLog(@"%@ match 固定电话: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.387 Demonspredicate[2472:315182] 075522222222 match 固定电话: 1
// 验证email
text = @"zhangsy@163.com";
predicate = [nspredicate predicateWithFormat:@"SELF MATCHES '[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,5}'"];
NSLog(@"%@ match 电子邮箱: %d",[predicate evaluateWithObject:text]);

2018-03-05 15:34:34.387 Demonspredicate[2472:315182] zhangsy@163.com match 电子邮箱: 1

NSPredicate使用(4)——字符串比较运算的更多相关文章

  1. ios – 为什么“NOT IN”在这个NSPredicate中不起作用?

    A.b和B.a与许多关系相反.为什么这个谓词为A工作:虽然这个没有:我认为两个谓词都应该给出相同的结果–通过b与bObject无关的As的集合.但实际上,第一个给出正确的集合,而第二个没有.更新:这是sampleproject,其中A.b由Account.filtered_clients体现,B.a由Client.filtered_by体现.在MasterViewController.m中切

  2. ios – 如何创建一个比较对象所有属性的谓词?

    例如,我有一个具有三个属性的对象:firstName,middleName,lastName.如果我想使用nspredicate在所有属性中搜索字符串“john”.而不是像以下那样创建谓词:[nspredicatepredicateWithFormat:@“(firstName包含[cd]%@)OR(lastName包含[cd]%@)OR(middleName包含[cd]%@)”,@“john”,

  3. ios – 使用NSPredicate搜索/过滤自定义类数组

    我有一个包含自定义类对象的数组,我想基于其中一个类属性是否包含自定义字符串来过滤数组.我有一个方法,传递我想要搜索的属性(列)和它将搜索的字符串(searchString).这是我的代码:但是,它始终抛出异常displayProviders=[[tempfilteredArrayUsingPredicate:query]mutablecopy];说这个类不是密钥值编码兼容的密钥[无论searchS

  4. ios – 构建复杂的NSCompoundPredicate最好的方法是什么?

    我需要用许多数据构建一个nspredicate.例如在sql中,我会做如下的操作:我正在努力与如何构建一个用于核心数据的nspredicate.我已经阅读了只提供简单实例的文档.如果有人能指出一个更复杂的例子,我一定会感激的.那么我在这里回答了两年,很多人觉得有帮助.我的帖子已被删除.以下是更新的解决方案URL.https://www.radeeccles.com/convert-sql-stat

  5. ios – 如何通过在CloudKit中的creationDate进行查询?

    我想从CloudKit获取最后十分钟的公共/私人条目.我尝试了一些这样的效果,但失败了:但这会让我得到数据,但是我不知道我是查询一切,还是只是某种上限:我想能够查询一定的时间.这样做可能没有在客户端做创建排序逻辑吗?

  6. iOS:NSPredicate使用NSDate进行比较

    解决方法我认为你今天的看法有问题.AFAIK,NSDate代表了一个绝对的时间点,所以你在没有“时间”的情况下创建“日期”的努力似乎是徒劳的.而且使用NSDateFormatter设置日期也是不稳定的.我想你必须创建两个不同的NSDate对象:startOfCurrentDay和endOfCurrentDay,并且亲自地使用NSCalendar.如果这样做,您的提取请求谓词将是:

  7. 如何在IOS中使用两个谓词过滤UITableView

    解决方法是的,像这样…然后,这将显示所有以名字从搜索开始的人,或者姓氏以搜索开始.我更喜欢使用这种格式在单个谓词中使用OR和AND,因为它使整个代码更易读.这也可以用来获得谓词的NOT.如果您使用单个谓词内置复合谓词,也可以很容易地感到困惑.

  8. ios – 具有多重条件的NSPredicate

    我正在尝试创建具有多个条件的nspredicate.我找到了几个解决方案,但是他们似乎都没有使用我的方法.我找到的最好的一个是下面.这是我的单一谓词方法,它的工作原理很好:这是我的编辑版本与多个条件.我不知道出了什么问题.有任何想法吗?解决方法你可以试试这个

  9. ios – 如何在Swift中为PHFetchOptions格式化NSPredicate?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. ios – 在NSArray上NSPredicate来搜索任何对象

    我有一个数组的名称,地址,电话的对象.诺斯等我想能够搜索阵列中任何一个术语的出现–无论是在名称字段,地址字段等中.我有这样的想法:这导致异常“不能在/包含运算符与集合中使用”.UPDATE.我现在可以搜索最多三个字段.当我添加第四个,我得到这个异常:“无法解析格式字符串…”谓词代码现在是:谓词搜索字段有三个限制吗?如何解决这个问题?

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部