文字のセットを単一の文字に置き換える必要があります。わかりました 問題ありません。これには多くの方法があります。現在、私は以下を実装しています:
-(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];
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で機能しています。私が見たいほど簡潔ではありません。