我想用谓词实现 Xcode 函数过滤。如果您在 Xcode 中过滤函数名称,则通过“myFunc”它会查找该字符序列而不是确切的字符串。
例子:
momsYellowFunCar
m Y FunC
我是否必须使用 MATCHES 并以某种方式提供正则表达式?
我想用谓词实现 Xcode 函数过滤。如果您在 Xcode 中过滤函数名称,则通过“myFunc”它会查找该字符序列而不是确切的字符串。
例子:
momsYellowFunCar
m Y FunC
我是否必须使用 MATCHES 并以某种方式提供正则表达式?
您可以使用 10.7+ 和 iOS 4.0+ 中内置的 NSRegularExpression 来执行此操作。类似于以下内容:
NSArray *stringsToSearch = [NSArray arrayWithObjects:@"mYFunC", @"momsYellowFunCar", @"Hello World!", nil];
NSString *searchString = @"mYFunC";
NSMutableString *regexPattern = [NSMutableString string];
for (NSUInteger i=0; i < [searchString length]; i++) {
NSString *character = [searchString substringWithRange:NSMakeRange(i, 1)];
[regexPattern appendFormat:@"%@.*", character];
}
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexPattern
options:NSRegularExpressionDotMatchesLineSeparators
error:&error];
if (!regex) {
NSLog(@"Couldn't create regex: %@", error);
return;
}
NSMutableArray *matchedStrings = [NSMutableArray array];
for (NSString *string in stringsToSearch) {
if ([regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])] > 0) {
[matchedStrings addObject:string];
}
}
NSLog(@"Matched strings: %@", matchedStrings); // mYFunC and momsYellowFunCar, but not Hello World!
如果您必须使用 NSPredicate,您可以使用此代码的变体-[NSPredicate predicateWithBlock:]
。