objective-c nsstring nscharacterset

objective c - Eliminar caracteres en NSCharacterSet de NSString



objective-c (3)

Tengo un NSCharacterSet que contiene todos los caracteres que quiero eliminar de mi NSString.

¿Cómo puedo hacer eso?


Echa un vistazo al siguiente código:

@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 especifica una cadena de reemplazo de @ "", eliminaría los caracteres del conjunto.


Puede usar un NSScanner para escanear a través de la cadena, escanear un trozo de caracteres que no están en el conjunto, agregarlo a su cadena de resultados, escanear los caracteres en el conjunto en una variable que de otra manera ignoraría y repetir Hasta que el escáner llegue al final.


Si no está demasiado preocupado por la eficiencia, una forma simple sería [[myString componentsSeparatedByCharactersInSet:myCharacterSet] componentsJoinedByString:@""] .

De lo contrario, podría ejecutar los caracteres en un bucle, agregando los que no estaban en el conjunto en una nueva cadena. Si lo hace de esa manera, recuerde usar un NSMutableString para su resultado mientras lo está construyendo.