2010-08-13 21 views

Répondre

37

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.

3

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.

2

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.