我需要用一个字符替换一组字符。好的没问题。有很多方法可以解决这个问题。目前,我正在实施以下内容:
-(NSString *)spank:(NSString *)string
{
NSCharacterSet *buggers = [NSCharacterSet characterSetWithCharactersInString:BAD_CHARS];
return [[string componentsSeparatedByCharactersInSet:buggers]
componentsJoinedByString:GOOD_CHAR];
}
My problem is discovering other sets of characters that are in need of being replaced within that same string.
e.g。
#define BAD_CHARS @"`^"
#define GOOD_CHAR @"|"
#define TEST @"Lor*em` ipsum dolor ^sit amet"
...
clean = [self spank:TEST];
console log:clean =“Lor * em | ipsum dolor | sit amet”
但用不同的角色替换*会很不错。其他案例可以在以后添加。
要解决这个问题,我可以:
消息为同一个字符串重复打击,授予我更改签名的权限。 (无聊,重复,低效)
-(NSString *)spank:(NSString *)string bad:(NSString *)badset good:(NSString *)good;
使用枚举。 (我已经成功实现了这一点)
-(NSString *)spank:(NSString *)string
{
static NSDictionary *blackbook;
if (!blackbook) blackbook = [NSDictionary dictionaryWithObjectsAndKeys:
GOOD_CHAR_A, BAD_CHARS_A,
GOOD_CHAR_B, BAD_CHARS_B, nil];
__block NSString *pure = string;
[blackbook enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSCharacterSet *buggers = [NSCharacterSet characterSetWithCharactersInString:key];
pure = [[pure componentsSeparatedByCharactersInSet:buggers]
componentsJoinedByString:obj];
}];
return pure;
}
从NSCoder实施编码器。这是我尚未探索过的一个领域。
使用php。在将其返回给客户端之前,我可以选择使用php清除字符串。也许在那里会更容易。想法?
其他一些更清洁,更简单的方法我还没想出来,但也许你有。
提前感谢任何建议。我确实使用了解决方案#2。只是没有我希望看到的简洁。
答案 0 :(得分:2)
对我而言,更简单的解决方案就是这样,但它可能没有最佳性能。
NSString *text = @"Lor*em` ipsum dolor ^sit amet";
NSDictionary *dictionary = @{@"*":@"",@"^":@"",@"`":@""};
for (NSString *key in dictionary)
{
text = [text stringByReplacingOccurrencesOfString:key withString:dictionary[key]];
}
NSLog(@"TEXT : %@",text);
编辑1:
这对我也有用,至少对于那个例子来说
NSString *text = @"Lor*em` ipsum dolor ^sit amet";
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:@"*^`"];
text = [[text componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@""];
NSLog(@"TEXT : %@",text);