iOS中正则表达式的使用--NSPredicate

iOS中正则表达式的使用--NSPredicate,第1张

概述首先举一个例子: 匹配9-15个由字母/数字组成的字符串的正则表达式:     NSString * regex = @"^[A-Za-z0-9]{9,15}$";     NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];     BOOL isMatch = [pred evaluat 首先举一个例子:
匹配9-15个由字母/数字组成的字符串的正则表达式:
    Nsstring * regex = @"^[A-Za-z0-9]{9,15}$";
    nspredicate *pred = [nspredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    BOol isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];

Cocoa用nspredicate描述查询的方式,原理类似于在数据库中进行查询

用BETWEEN,IN,BEGINWITH,ENDWITH,CONTAINS,liKE这些谓词来构造nspredicate,必要的时候使用SELF直接对自己进行匹配

//基本的查询nspredicate *predicate;predicate = [nspredicate predicateWithFormat: @"name == 'HerbIE'"];    BOol match = [predicate evaluateWithObject: car];    NSLog (@"%s",(match) ? "YES" : "NO");//在整个cars里面循环比较    predicate = [nspredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *cars = [garage cars];    for (Car *car in [garage cars]) {        if ([predicate evaluateWithObject: car]) {            NSLog (@"%@",car.name);        }    }//输出完整的信息    predicate = [nspredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *results;    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);//含有变量的谓词    nspredicate *predicateTemplate = [nspredicate predicateWithFormat:@"name == $name"];    NSDictionary *varDict;    varDict = [NSDictionary dictionaryWithObjectsAndKeys:               @"HerbIE",@"name",nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    NSLog(@"SnorGLE: %@",predicate);    match = [predicate evaluateWithObject: car];  NSLog (@"%s",(match) ? "YES" : "NO");//注意不能使用$VARIABLE作为路径名,因为它值代表值//谓词字符窜还支持c语言中一些常用的运算符       predicate = [nspredicate predicateWithFormat:                 @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"oop %@",results);       predicate = [nspredicate predicateWithFormat: @"name < 'Newton'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",[results valueForKey: @"name"]);//强大的数组运算符    predicate = [nspredicate predicateWithFormat:                 @"engine.horsepower BETWEEN { 50,200 }"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);       NSArray *betweens = [NSArray arrayWithObjects:                         [NSNumber numberWithInt: 50],[NSNumber numberWithInt: 200],nil];    predicate = [nspredicate predicateWithFormat: @"engine.horsepower BETWEEN %@",betweens];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);    predicateTemplate = [nspredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];    varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens,@"POWERS",nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);//IN运算符    predicate = [nspredicate predicateWithFormat: @"name IN { 'HerbIE','Snugs','Badger','Flap' }"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",[results valueForKey: @"name"]);    predicate = [nspredicate predicateWithFormat: @"SELF.name IN { 'HerbIE',[results valueForKey: @"name"]);       names = [cars valueForKey: @"name"];    predicate = [nspredicate predicateWithFormat: @"SELF IN { 'HerbIE','Flap' }"];    results = [names filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围    NSLog (@"%@",results);//BEGINSWITH,ENDSWITH,CONTAINS//附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分    predicate = [nspredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);       predicate = [nspredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);       predicate = [nspredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);//liKE运算符(通配符)    predicate = [nspredicate predicateWithFormat: @"name liKE[cd] '*er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);       predicate = [nspredicate predicateWithFormat: @"name liKE[cd] '???er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@",results);
参考文章地址:http://hi.baIDu.com/%D3%D0%CF%E3%D1%CC%C3%BB%BB%F0%B2%F1/blog/item/da1b3aa3c5d64289d0435821.HTML 总结

以上是内存溢出为你收集整理的iOS中正则表达式的使用--NSPredicate全部内容,希望文章能够帮你解决iOS中正则表达式的使用--NSPredicate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1055823.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存