Cómo reemplazar la cadena se producen en NSMutableString de otra cadena
-
02-10-2019 - |
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 ??
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