匹配多个模式的字符串

时间:2015-06-04 14:40:32

标签: objective-c nsstring

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

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

目前,我正在与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]){

}

但是,我没有看到任何方法在这样的解决方案中增加计数器,因为它们取决于完全匹配....

所以我想知道这里是否有人知道这个问题的更全面/更好的解决方案.....

提前致谢 诺贝特

1 个答案:

答案 0 :(得分:1)

如何对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++;
    }
}