2011-10-06 199 views
0

如何執行字符串匹配,就像regex一樣?匹配字符串格式

例如我有一個字符串數組,我想匹配,如果這些字符串是在"abc def xxx"的格式,這是xxx數等11112100111

如何能我做到了?

回答

4

的陣列:

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

+0

非常感謝!不勝感激! :) –

+0

不客氣! ;-) – EmptyStack