Pregunta

Tengo un NSMutableString que contiene una palabra de dos veces. (Por ejemplo. / Abc ...................... / abc).

Ahora quiero reemplazar estas dos ocurrencias de / abc con / XYZ. Quiero reemplazar sólo la primera y la última ocurrencia sin otras ocurrencias.

 - (NSUInteger)replaceOccurrencesOfString:(NSString *)target
                               withString:(NSString *)replacement
                                  options:(NSStringCompareOptions)opts 
                                    range:(NSRange)searchRange

Me parece que este método instancia de NSMutableString pero no soy capaz de utilizarlo en mi caso. Alguien tiene alguna solución ??

¿Fue útil?

Solución

En primer lugar, se puede encontrar a los dos rangos y luego reemplazarlos por separado:

NSMutableString *s = [NSMutableString stringWithString:@"/abc asdfpjklwe /abc"];

NSRange a = [s rangeOfString:@"/abc"];
NSRange b = [s rangeOfString:@"/abc" options:NSBackwardsSearch];

if ((a.location == NSNotFound) || (b.location == NSNotFound))  {
    // at least one of the substrings not present
} else {
    [s replaceCharactersInRange:a withString:@"/xyz"];
    [s replaceCharactersInRange:b withString:@"/xyz"];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top