2010-08-13 22 views

Respuesta

37

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

De lo contrario, podría ejecutar a través de los caracteres en un bucle, añadiendo los que no estaban en el conjunto a una nueva cadena. Si lo hace de esa manera, recuerde usar un NSMutableString para su resultado a medida que lo va creando.

3

Puede usar un NSScanner para escanear a través de la cadena, escanear un trozo de caracteres-no-en-el-conjunto, adjuntarlo a su cadena de resultados, escanear los caracteres-en-el-conjunto en una variable que de otra manera ignore y repita hasta que el escáner llegue al final.

2

descargar el código siguiente:

@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 @ "" que le quite los caracteres en el conjunto.

Cuestiones relacionadas