IOS - NSPredicate(类似正则的使用)

标签:
ios-nspredicate(类似it |
分类: Mac/IOS那些事 |
简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取。
最常用到的函数
+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...;
1.比较运算符 > 、< 、== 、 >= 、<= 、 !=
例:@"number >= 99"
2.范围运算符:IN 、BETWEEN
例:@"number BETWEEN {1,5}"
3.字符串本身:SELF
例:@"SELF == 'APPLE'"
4.字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAIN[cd] 'ang'"
注:[c]不区分大小写 , [d]不区分发音符号即没有重音符号 , [cd]既不区分大小写,也不区分发音符号。
5.通配符:LIKE
例:@"name LIKE[cd] '*er*'"
实际应用:邮箱验证、电话号码验证
//是否是有效的正则表达式 +(BOOL)isValidateRegularExpression:(NSString *)strDestination byExpression:(NSString *)strExpression { NSPredicate *predicate = [NSPredicatepredicateWith Format:@"SELF MATCHES %@", strExpression]; return [predicate evaluateWithObject:strDestination]; } //验证email +(BOOL)isValidateEmail:(NSString *)email { NSString *strRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,5}"; BOOL rt = [CommonTools isValidateRegularExpress ion:email byExpression:strRegex]; return rt; } //验证电话号码 +(BOOL)isValidateTelNumber:(NSString *)number { NSString *strRegex = @"[0-9]{1,20}"; BOOL rt = [CommonTools isValidateRegularExpression:number byExpression:strRegex]; return rt; }
实际应用:NSDate进行筛选
//日期在十天之内: NSDate *endDate = [[NSDate date] retain]; NSTimeInterval timeInterval= [endDate timeIntervalSinceReferenceDate]; timeInterval -=3600*24*10; NSDate *beginDate = [[NSDate dateWithTimeIntervalSinceReferenceDate:timeInterval] retain]; //对coredata进行筛选(假设有fetchRequest) NSPredicate *predicate_date = [NSPredicate predicateWithFormat:@"date >= %@ AND date <= %@", beginDate,endDate]; [fetchRequest setPredicate:predicate_date]; //释放retained的对象 [endDate release]; [beginDate release];
原文地址:http://www.cnblogs.com/thefeelingofsimple/archive/2013/01/31/2886915.html