2015-06-04 198 views
0

我对于一个非常简单的问题的解决方案的风格有疑问。匹配多个模式的字符串

我有一个程序,可以根据一系列模式匹配文件名列表。如果文件名称与模式匹配,则文件被重命名并且计数器递增。

目前我对匹配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

如何将模式放在数组中并让文件循环遍历它们? –

+0

这是我认为的解决方案之一。但是,我还必须将计数器放入数组中。它最终会出现在一系列结构体/对象中......我对这个解决方案的初步想法是:太复杂:-( 具体来说,最初的复杂性非常高,所以对于我的4个模式匹配,最有可能的是更多的代码... – Norbert

+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++; 
    } 
}