2010-09-17 41 views
3

我想在一個NSString中替換幾個不同的字符組。目前,我與幾個重複的方法做它,但是我希望有一個方法,這樣做的方式:在NSString中替換多組字符

NSString *result = [html stringByReplacingOccurrencesOfString:@"<B&" withString:@" "]; 
NSString *result2 = [result stringByReplacingOccurrencesOfString:@"</B>" withString:@" "]; 

NSString *result3 = [result2 stringByReplacingOccurrencesOfString:@"gt;" withString:@" "]; 
return [result3 stringByReplacingOccurrencesOfString:@" Description " withString:@""]; 

回答

6

我不認爲這是在SDK中任何東西,但你至少可以使用通過使用類似下面的

NSDictionary *replacements = [NSDictionary dictionaryWithObjectsAndKeys: 
           @" ", @"<B&", 
           @" ", @"</B>", 
           @" ", @"gt;" 
           @"" , @" Description ", 
           nil]; 
return [html stringByReplacingStringsFromDictionary:replacements]; 

...:

@interface NSString (ReplaceExtensions) 
- (NSString *)stringByReplacingStringsFromDictionary:(NSDictionary *)dict; 
@end 

@implementation NSString (ReplaceExtensions) 
- (NSString *)stringByReplacingStringsFromDictionary:(NSDictionary *)dict 
{ 
    NSMutableString *string = [self mutableCopy]; 
    for (NSString *target in dict) { 
     [string replaceOccurrencesOfString:target withString:[dict objectForKey:target] 
       options:0 range:NSMakeRange(0, [string length])]; 
    } 
    return [string autorelease]; 
} 
@end 

在現代目標C與ARC:此類別所以你可以寫這樣的事情

-(NSString*)stringByReplacingStringsFromDictionary:(NSDictionary*)dict 
{ 
    NSMutableString *string = self.mutableCopy; 
    for(NSString *key in dict) 
     [string replaceOccurrencesOfString:key withString:dict[key] options:0 range:NSMakeRange(0, string.length)]; 
    return string.copy; 
}