讨论" stringByReplacingOccurrencesOfString:withString:"

时间:2012-03-30 08:01:47

标签: objective-c nsstring

我正在考虑有关

的一些细节

stringByReplacingOccurrencesOfString:withString:in NSString class

根据文件。

它返回一个新字符串,其中接收器中所有出现的目标字符串都被另一个给定的字符串替换。

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

参数 目标 要替换的字符串。 替换 用于替换目标的字符串。

我的问题是,如果在目标字符串中找不到替换字符串。如果调用此功能会有一些副作用。

由于

例如

    NSString *myString = [NSString stringWithString:@"Hello my string"];
    NSString *myReplacementString = [myString stringByReplacingOccurrencesOfString:@"NOTFOUND" withString@"Any side effect?"];
    NSLog(@"my replacement string is %@", myReplacementString);

3 个答案:

答案 0 :(得分:2)

该功能没有副作用,如果在接收器中找不到搜索字符串,接收器将不加改变地返回。

答案 1 :(得分:1)

  1. myStringtargetreplacement如果找不到匹配项,则不会被修改:

    • 该方法不会更改字符串myString,但会创建一个包含结果的新字符串。

    • targetreplacement是该方法的参数,其值不会发生变化。

    • myStringtargetreplacement是不可变的字符串。

  2. 如果找不到匹配项,则没有错误或例外。

答案 2 :(得分:1)

没有副作用:如果原始字符串中没有要替换的子字符串,则最终会得到与您开始时相同的NSString

确实,(这是一个实现细节,你不应该依赖它,但是)你甚至不会得到原始字符串的副本,而是指向同一个字符串的指针。