2015-06-04 197 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++; 
    } 
}