2009-03-20 15 views

Respuesta

748

Se puede usar el método

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target 
             withString:(NSString *)replacement 

... para obtener una nueva cadena con una subcadena reemplazado (Ver NSString documentación para otros)

ejemplo, el uso

NSString *str = @"This is a string"; 

str = [str stringByReplacingOccurrencesOfString:@"string" 
            withString:@"duck"]; 
+2

pensé el punto de tener NSString y una subclase NSMutableString fue porque una instancia de NSString es * inmutable *. Mientras que, como cualquier persona en su sano juicio, prefiero tener patos que cuerdas en cualquier momento, el hecho de que hayas sobreescrito el contenido de 'str' me dejó maravillado. – ele

+1

Pero supongo que la dirección de 'str' cambió en el proceso – Colas

+11

, no cambia. str ahora contiene una cadena completamente nueva. stringByReplacingOccurencesOfString NO muta la cadena. Simplemente devuelve una nueva cadena. –

22

NSString objetos son inmutables (no se pueden cambiar), pero hay una subclase mutable, NSMutableString, que le ofrece varios métodos para reemplazar caracteres dentro de una cadena. Probablemente sea tu mejor opción.

0

El problema existe en versiones anteriores en el iOS. en la última, la derecha-izquierda funciona bien. lo que hice, es el siguiente:

primer puedo comprobar la versión de IOS:

if (![self compareCurVersionTo:4 minor:3 point:0]) 

de: trabajo

// set RTL on the start on each line (except the first) 
myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n" 
                  withString:@"\u202B\n"]; 
7

Si desea múltiples sustitución de cadenas:

NSString *s = @"foo/bar:baz.foo"; 
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."]; 
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 
NSLog(@"%@", s); // => foobarbazfoo 
6

También es posible reemplazar cadenas con stringByReplacingCharactersInRange: withString:

for (int i = 0; i < card.length - 4; i++) { 

    if (![[card substringWithRange:NSMakeRange(i, 1)] isEqual:@" "]) { 

     NSRange range = NSMakeRange(i, 1); 
     card = [card stringByReplacingCharactersInRange:range withString:@"*"]; 

    } 

} //out: **** **** **** 1234 
0
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"]; 
+0

Utilice el enlace [editar] para explicar cómo funciona este código y no solo proporcione el código, ya que una explicación es más probable que ayude a los lectores futuros. Ver también [respuesta]. [fuente] (http://stackoverflow.com/users/5244995) –

Cuestiones relacionadas