J'ai un NSCharacterSet qui contient tous les caractères que je veux supprimer de mon NSString.Supprimer des caractères dans NSCharacterSet de NSString
Comment puis-je faire cela?
J'ai un NSCharacterSet qui contient tous les caractères que je veux supprimer de mon NSString.Supprimer des caractères dans NSCharacterSet de NSString
Comment puis-je faire cela?
Si vous n'êtes pas trop inquiet au sujet de l'efficacité, un moyen simple serait [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""]
. Sinon, vous pourriez parcourir les caractères dans une boucle, en ajoutant ceux qui n'étaient pas dans l'ensemble sur une nouvelle chaîne. Si vous le faites de cette façon, n'oubliez pas d'utiliser un NSMutableString
pour votre résultat au fur et à mesure que vous le construisez.
Vous pouvez utiliser un NSScanner pour parcourir la chaîne, analyser un morceau de caractères non inclus dans l'ensemble, l'ajouter à votre chaîne de résultats, analyser les caractères dans l'ensemble dans une variable que vous avez autrement ignorez et répétez jusqu'à ce que le scanner atteigne la fin.
Commander le code suivant:
@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
Si vous spécifiez une chaîne de remplacement @ « » vous supprimer les caractères dans l'ensemble.