在NSString中替换多个字符组

3

我希望能够在一个NSString中替换多个不同的字符组。目前我使用了几个重复的方法来完成这个操作,但我希望有一种方法可以只用一个方法来实现:

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

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

6

我认为 SDK 中没有相关内容,但你可以至少使用一个类别(category)来实现此功能,如下所示:

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

在现代 Objective 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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接