1.NSPredicate是什麼html
NSPredicate 最大的做用就是過濾數據了,它是一種數據過濾的工具類,你可使用相似SQL的查詢語句來獲取符合某些條件的數據web
2.一個例子正則表達式
NSArray *array = [[NSArray alloc]initWithObjects:@"beijing",@"shanghai",@"guangzou",@"Guangzou",@"wuhan",@"wuchang", nil];工具
NSPredicate *pred = [NSPredicatepredicateWithFormat:@"SELF CONTAINS[cd] 'guang'"];lua
NSArray *pred1Arr =[array filteredArrayUsingPredicate:pred];spa
3.基本語法orm
其中format後的格式,正式如同SQL語句 htm
self是表明調用方法的對象對象
謂詞字符串
1.字符串相關:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAIN[cd] 'ang'" //包含某個字符串
@"name BEGINSWITH[c] 'sh'" //以某個字符串開頭
@"name ENDSWITH[d] 'ang'" //以某個字符串結束
BETWEEN:左邊的表達式等於右邊的表達式的值或者介於它們之間。右邊是一個有兩個指定上限和下限的數值的數列(指定順序的數列)。好比,1 BETWEEN { 0 , 33 },
注:[c]不區分大小寫 , [d]不區分發音符號即沒有重音符號 , [cd]既不區分大小寫,也不區分發音符號。
實際應用:對NSArray進行過濾
2.字符串自己:SELF
例:@"SELF == 'APPLE'"
3.通配符:LIKE
例:@"name LIKE[cd] '*er*'" //*表明通配符,Like也接受[cd].
@"name LIKE[cd] '???er*'"
比較運算符 > 、< 、== 、 >= 、<= 、 !=
例:@"number >= 99"
4.正則表達式:MATCHES
例:NSString *regex = @"^A.+e$"; //以A開頭,e結尾
@"name MATCHES %@",regex
實際應用:判斷字符串首字母是否爲字母
5.替換
%@ 是對字符串,日期,數字等對象的替換
%K 某個類對象的屬性,即屬性鍵
4.使用範圍
定義兩個方法來驗證郵箱,利用MATCHES語句
+(BOOL)isValidateRegularExpression:(NSString *)strDestination
byExpression:(NSString *)strExpression
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strExpression];
BOOL isSuccess=[predicate evaluateWithObject:strDestination];
return isSuccess;
}
//驗證email
+(BOOL)isValidateEmail:(NSString *)email {
//jfkjkfj @ ddvv . com
NSString *strRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,5}";
BOOL rt = [self isValidateRegularExpression:email byExpression:strRegex];
NSString *string;
return rt;
}
參考文章
http://www.cocoachina.com/industry/20140321/8024.html