如何執行字符串匹配,就像regex
一樣?匹配字符串格式
例如我有一個字符串數組,我想匹配,如果這些字符串是在"abc def xxx"
的格式,這是xxx
數等1
,11
,12
,100
,111
等
如何能我做到了?
如何執行字符串匹配,就像regex
一樣?匹配字符串格式
例如我有一個字符串數組,我想匹配,如果這些字符串是在"abc def xxx"
的格式,這是xxx
數等1
,11
,12
,100
,111
等
如何能我做到了?
的陣列:
NSArray *array1 = [NSArray arrayWithObjects:@"abc def 1", @"abc def 64", @"abc def 853", @"abc def 14", nil];
NSArray *array2 = [NSArray arrayWithObjects:@"abc def 3", @"abc def 856", @"abc def 36", @"abc def 5367", nil];
正則表達式:
NSString *regex = @"abc def [0-9]{1,3}";
要檢查陣列中的所有串matche正則表達式:
個NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ALL description MATCHES %@", regex];
BOOL allStringsMatch = [predicate evaluateWithObject:array1];
// OUTPUT: YES
allStringsMatch = [predicate evaluateWithObject:array2];
// OUTPUT: NO
在陣列1所有對象的正則表達式匹配,但數組2包含字符串@ 「ABC DEF 5367」不,正則表達式匹配。
要得到匹配的字符串:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"description MATCHES %@", regex];
NSArray *unmatchedStrings = [array2 filteredArrayUsingPredicate:predicate];
// OUTPUT: { @"abc def 3", @"abc def 856", @"abc def 36" }
要獲得無與倫比的字符串:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT description MATCHES %@", regex];
NSArray *unmatchedStrings = [array2 filteredArrayUsingPredicate:predicate];
// OUTPUT: { @"abc def 5367" }
注意的是,這裏「說明」謂詞是- description
方法NSString。
非常感謝!不勝感激! :) –
不客氣! ;-) – EmptyStack