【问题标题】:How to replace string occur in NSMutableString from another string如何从另一个字符串替换 NSMutableString 中出现的字符串
【发布时间】:2010-09-13 09:53:34
【问题描述】:

我有一个包含两次单词的 NSMutableString。(例如 /abc ...................... /abc)。

现在我想将这两个 /abc 替换为 /xyz。我只想替换第一次和最后一次出现,而不是其他出现。

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

我找到了 NSMutableString 的这个实例方法,但我无法在我的情况下使用它。 谁有解决办法??

【问题讨论】:

标签: objective-c nsmutablestring


【解决方案1】:

可以先找到两个范围,然后分别替换:

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

【讨论】:

  • 它给出了异常 - “范围超出范围”。当我检查 a 和 b 的值时,它给出了一些垃圾值(22666222)。
  • @Greshi:记得检查NSNotFound
猜你喜欢
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 2019-05-14
  • 2013-07-10
  • 2021-06-15
  • 2014-06-13
  • 2011-12-19
  • 2013-12-03
相关资源
最近更新 更多