如何才能执行字符串匹配,就像regex
?
例如我有一个字符串数组,如果这些字符串的格式为"abc def xxx"
,xxx
的数字为1
,11
,我想匹配,12
,100
,111
等
我怎样才能做到这一点?
答案 0 :(得分: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}";
检查数组中的所有字符串是否与正则表达式匹配:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ALL description MATCHES %@", regex];
BOOL allStringsMatch = [predicate evaluateWithObject:array1];
// OUTPUT: YES
allStringsMatch = [predicate evaluateWithObject:array2];
// OUTPUT: NO
array1 中的所有对象都与正则表达式匹配,但 array2 包含字符串 @“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 的 - description
方法。
答案 1 :(得分:0)