为了账号安全,请及时绑定邮箱和手机立即绑定

从NSString中删除所有数字

从NSString中删除所有数字

饮歌长啸 2019-07-25 19:58:45
从NSString中删除所有数字我有一个带有一些括号和连字符的NSString(电话号码),因为某些电话号码已格式化。如何从字符串中删除除数字之外的所有字符?
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

老问题,但怎么样:

  NSString *newString = [[origString componentsSeparatedByCharactersInSet:
                [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] 
                componentsJoinedByString:@""];

它会爆炸非数字集上的源字符串,然后使用空字符串分隔符重新组合它们。不如通过字符选择那么高效,但在代码中更紧凑。


查看完整回答
反对 回复 2019-07-25
?
撒科打诨

TA贡献1934条经验 获得超2个赞


没有必要使用正则表达式库,因为其他答案建议 - 你所追求的类被调用NSScanner。它的用法如下:


NSString *originalString = @"(123) 123123 abc";

NSMutableString *strippedString = [NSMutableString 

        stringWithCapacity:originalString.length];


NSScanner *scanner = [NSScanner scannerWithString:originalString];

NSCharacterSet *numbers = [NSCharacterSet 

        characterSetWithCharactersInString:@"0123456789"];


while ([scanner isAtEnd] == NO) {

  NSString *buffer;

  if ([scanner scanCharactersFromSet:numbers intoString:&buffer]) {

    [strippedString appendString:buffer];


  } else {

    [scanner setScanLocation:([scanner scanLocation] + 1)];

  }

}


NSLog(@"%@", strippedString); // "123123123"

编辑:我已经更新了代码,因为原件是我的头顶写的,我认为这足以指出人们正确的方向。似乎人们在代码之后可以直接复制粘贴到他们的应用程序中。


我也同意Michael Pelz-Sherman的解决方案比使用更合适NSScanner,所以你可能想看一下。


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 743 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信