【问题标题】:stringByReplacingOccurrencesOfString method call does not change the string I call it onstringByReplacingOccurrencesOfString 方法调用不会改变我调用它的字符串
【发布时间】:2014-01-19 04:16:25
【问题描述】:

在 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: 不适合我?

【问题讨论】:

  • 我怎样才能确切地看到谁先回答?请参阅我的问题底部的“PS”。
  • 将鼠标悬停在与帖子关联的“已回答 x 分钟”前以查看时间戳。 i.stack.imgur.com/8JnzV.png
  • 感谢乔希的提示。

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


【解决方案1】:

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

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

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

【讨论】:

  • 我会在 7 分钟内接受。既然你回答了我就觉得自己像个白痴哈哈。方法调用的结果必须放在某个东西里面......我想我已经盯着我的笔记本电脑太久了:)
【解决方案2】:
numberValues = [numberValues stringByReplacingOccurrencesOfString:@"+" 
    withString:@""];

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

【讨论】:

  • 感谢您的贡献。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 2022-06-17
  • 2015-04-07
相关资源
最近更新 更多