我对一个非常简单的问题的解决方案的风格有疑问。
我有一个程序可以匹配多个模式的文件名列表。如果文件名与模式匹配,则重命名该文件并递增计数器。
目前,我正在与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]){
}
但是,我没有看到任何方法在这样的解决方案中增加计数器,因为它们取决于完全匹配....
所以我想知道这里是否有人知道这个问题的更全面/更好的解决方案.....
提前致谢 诺贝特
答案 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++;
}
}