我想删除所有字符,我需要的是 0 - 9 的数字
你能告诉我一些例子来解决这个问题吗?
您可以制作自己的 NSCharacterSet,然后使用它的倒置集修剪掉其中不包含的每个字符。这是一个例子:
NSString *stringWithLettersAndNumbers = @"345345345fff";
NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *newString = [stringWithLettersAndNumbers stringByTrimmingCharactersInSet:[myCharset invertedSet]];
NSLog(@"%@",newString);
正则表达式非常适合这类东西:
NSString *orgStr = @"letters34243more32132letters";
NSString *result = [orgStr stringByReplacingOccurrencesOfString: @"\\D"
withString: @""
options: NSRegularExpressionSearch
range: NSMakeRange(0, orgStr.length)];
它所做的是找到任何非数字字符(定义为\D
)并将其替换为空字符串,即删除它。
它对任何这样的字符执行此操作,而不管其在字符串中的位置。在我阅读这个问题时,这就是你所需要的。
模式字符串中的双反斜杠(“\”)是必要的,因为 NSString 文字需要一个额外的反斜杠来转义“真实”的反斜杠。
循环遍历字符串并拾取所有数字。
NSMutableString *strResult = [NSMutableString string];
for (int position=0; position<text.length; position++) {
unichar c = [text characterAtIndex:position];
NSCharacterSet *numericSet = [NSCharacterSet decimalDigitCharacterSet];
if ([numericSet characterIsMember:c]) {
[strResult appendFormat:@"%C", c];
}
}