我需要用单个字符替换一组字符。好的 没问题。有很多方法可以解决这个问题。目前,我正在实施以下内容:
-(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.
例如
#define BAD_CHARS @"`^"
#define GOOD_CHAR @"|"
#define TEST @"Lor*em` ipsum dolor ^sit amet"
...
clean = [self spank:TEST];
控制台日志: 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一起使用。只是不像我想看到的那么简洁。