NSString から削除したいすべての文字を含む NSCharacterSet があります。
どうやってやるの?
効率についてあまり心配していなければ、簡単な方法があります[[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""]
。
それ以外の場合は、ループ内の文字を実行して、セットに含まれていない文字を新しい文字列に追加することができます。そのように行う場合はNSMutableString
、結果を構築するときに、結果にを使用することを忘れないでください。
次のコードをチェックアウトします。
@implementation NSString(Replacing)
- (NSString *)stringByReplacingCharactersInSet:(NSCharacterSet *)charSet withString:(NSString *)aString {
NSMutableString *s = [NSMutableString stringWithCapacity:self.length];
for (NSUInteger i = 0; i < self.length; ++i) {
unichar c = [self characterAtIndex:i];
if (![charSet characterIsMember:c]) {
[s appendFormat:@"%C", c];
} else {
[s appendString:aString];
}
}
return s;
}
@end
@"" の置換文字列を指定すると、セット内の文字が削除されます。
NSScannerを使用して文字列をスキャンし、セットに含まれていない文字のチャンクをスキャンし、それを結果文字列に追加し、セットに含まれる文字をスキャンして、それ以外の場合は無視する変数に入れ、繰り返すことができます。スキャナが最後まで到達するまで。