3 回答
TA贡献1828条经验 获得超4个赞
老问题,但怎么样:
NSString *newString = [[origString componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
它会爆炸非数字集上的源字符串,然后使用空字符串分隔符重新组合它们。不如通过字符选择那么高效,但在代码中更紧凑。
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,所以你可能想看一下。
- 3 回答
- 0 关注
- 743 浏览
添加回答
举报