0

我想删除所有字符,我需要的是 0 - 9 的数字

你能告诉我一些例子来解决这个问题吗?

4

3 回答 3

3

您可以制作自己的 NSCharacterSet,然后使用它的倒置集修剪掉其中不包含的每个字符。这是一个例子:

NSString *stringWithLettersAndNumbers = @"345345345fff";

NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *newString = [stringWithLettersAndNumbers stringByTrimmingCharactersInSet:[myCharset invertedSet]];

NSLog(@"%@",newString);
于 2013-09-01T03:18:17.167 回答
2

正则表达式非常适合这类东西:

NSString *orgStr = @"letters34243more32132letters";

NSString *result = [orgStr stringByReplacingOccurrencesOfString: @"\\D"
                                                     withString: @""
                                                        options: NSRegularExpressionSearch
                                                          range: NSMakeRange(0, orgStr.length)];

它所做的是找到任何非数字字符(定义为\D)并将其替换为空字符串,即删除它。

它对任何这样的字符执行此操作,而不管其在字符串中的位置。在我阅读这个问题时,这就是你所需要的。

模式字符串中的双反斜杠(“\”)是必要的,因为 NSString 文字需要一个额外的反斜杠来转义“真实”的反斜杠。

于 2013-09-01T15:16:07.663 回答
0

循环遍历字符串并拾取所有数字。

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]; 
  }
}
于 2013-09-01T03:26:47.807 回答