Как заменить строку, встречающуюся в NSMutableString, на другую строку - PullRequest
3 голосов
/ 13 сентября 2010

У меня есть NSMutableString, которая содержит слово дважды. (Например, / abc ...................... /abc).

Теперь я хочу заменить эти два вхождения / abc на / xyz. Я хочу заменить только первый и последний события, но не другие.

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

Я нахожу этот метод экземпляра NSMutableString, но я не могу использовать его в моем случае. У кого-нибудь есть решение ??

1 Ответ

5 голосов
/ 13 сентября 2010

Сначала вы можете найти два диапазона, а затем заменить их отдельно:

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"];
}
...