stringByReplacingOccurrencesOfString方法调用不会更改我调用它的字符串

时间:2014-01-19 04:16:26

标签: ios objective-c string cocoa-touch nsstring

在for循环中,我有一个if语句,如下所示:

if([numberValues rangeOfString:@"+"].location == NSNotFound) {

    NSLog(@"Phone Number does not contain a plus sign.");

} else {

    NSLog(@"Phone number does contain a +");

    [numberValues stringByReplacingOccurrencesOfString:@"+" withString:@""];

    NSLog(@"This new numberValues object should not have a + anymore: %@", numberValues);

}

我可以确认rangeOfString:方法调用是否完美,因为我的地址簿中的电话号码不是以“+”开头,而是会打印“电话号码不包含加号”。到日志。

我的问题是stringByReplacingOccurrencesOfString:来电不起作用。在通话结束后,当我将numberValues对象数据打印到日志时,电话号码仍然看起来像“+13997573173”,而不是没有像“13997573173”这样的加号打印。

我甚至尝试将方法调用中的“+”更改为电话号码的前4位数字,但仍然不会用新字符串替换目标字符串。

每次只打印相同的值。有什么想法stringByReplacingOccurrencesOfString:对我不起作用?

2 个答案:

答案 0 :(得分:1)

numberValues = [numberValues stringByReplacingOccurrencesOfString:@"+" 
    withString:@""];

stringByReplacingOccurrencesOfString返回一个新字符串。将其分配给原始字符串。

答案 1 :(得分:1)

方法stringByReplacingOccurrencesOfString:withString:实际上返回一个字符串,并且不会改变你传入的字符串。

所以你可能想要做这样的事情:

numberValues = [numberValues stringByReplacingOccurrencesOfString:@"+" 
    withString:@""];