将字符串与多个模式匹配

Matching a string against multiple patterns

我对一个非常简单的问题的解决方案风格有疑问。

我有一个程序可以将文件名列表与多种模式进行匹配。如果文件名与模式匹配,则文件被重命名并且计数器递增。

目前我正在匹配 4 种不同的模式

if ([file rangeOfString:pattern].location != NSNotFound) {
counter ++;
//rename file...
}

if ([file rangeOfString:pattern2].location != NSNotFound) {
counter2 ++;
//rename file...
}
[...]

该解决方案运行良好但无法扩展。如果我必须匹配更多的模式。

所以我考虑使用类似

的东西
NSString *someRegexp = ...; 
NSPredicate *myTest = [NSPredicate predicateWithFormat:file, someRegexp]; 

if ([myTest evaluateWithObject: testString]){

}

但是,我看不出有任何方法可以增加此类解决方案中的计数器,因为它们取决于精确匹配....

所以我想知道这里是否有人知道更多 comprehensive/nice 解决这个问题的方法......

提前致谢 诺伯特

如何子类化 NSString,添加一个计数器来跟踪 match count

@interface PatternMatchingString : NSString

@property (readwrite) NSUInteger matchCount;

@end

-(void)patternMatching
{
    for(PatternMatchingString *pattern in arrayOfPatterns)
    {
        if([file rangeOfString:pattern].location != NSNotFound)
            pattern.matchCount++;
    }
}