从NSString中删除所有数字

从NSString中删除所有数字

我有一个带有一些括号和连字符的NSString(电话号码),因为某些电话号码已格式化。如何从字符串中删除除数字之外的所有字符?



饮歌长啸
浏览 744回答 3
3回答

明月笑刀无情

老问题,但怎么样:  NSString *newString = [[origString componentsSeparatedByCharactersInSet:                 [[NSCharacterSet decimalDigitCharacterSet] invertedSet]]                  componentsJoinedByString:@""];它会爆炸非数字集上的源字符串,然后使用空字符串分隔符重新组合它们。不如通过字符选择那么高效,但在代码中更紧凑。

撒科打诨

没有必要使用正则表达式库,因为其他答案建议 - 你所追求的类被调用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,所以你可能想看一下。
打开App,查看更多内容
随时随地看视频慕课网APP