如何从另一个字符串替换 NSMutableString 中出现的字符串

发布于 2024-09-19 09:13:24 字数 482 浏览 6 评论 0原文

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

现在我想用 /xyz 替换这两次出现的 /abc。我只想替换第一个和最后一个出现的情况,而不替换其他出现的情况。

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

我找到了 NSMutableString 的实例方法,但我无法在我的情况下使用它。 大家有什么解决办法吗??

I have a NSMutableString that contains a word twice.(e.g. /abc ...................... /abc).

Now I want to replace these two occurrences of /abc with /xyz. I want to replace only first and last occurence no other occurences.

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

I find this instance method of NSMutableString but I am not able to use it in my case.
Anyone have any solution??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尐偏执 2024-09-26 09:13:25

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

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

You can first find the two ranges and then replace them seperately:

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"];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文