3 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
老問題,但怎么樣:
NSString *newString = [[origString componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
它會爆炸非數(shù)字集上的源字符串,然后使用空字符串分隔符重新組合它們。不如通過字符選擇那么高效,但在代碼中更緊湊。

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊
沒有必要使用正則表達(dá)式庫,因為其他答案建議 - 你所追求的類被調(diào)用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"
編輯:我已經(jīng)更新了代碼,因為原件是我的頭頂寫的,我認(rèn)為這足以指出人們正確的方向。似乎人們在代碼之后可以直接復(fù)制粘貼到他們的應(yīng)用程序中。
我也同意Michael Pelz-Sherman的解決方案比使用更合適NSScanner,所以你可能想看一下。
- 3 回答
- 0 關(guān)注
- 797 瀏覽
添加回答
舉報