Objective C Regular Expression删除除数字之外的所有内容

时间:2013-09-01 03:12:13

标签: objective-c nsregularexpression

我想删除所有字符,我需要的东西是0到9之间的数字

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

3 个答案:

答案 0 :(得分:3)

您可以创建自己的NSCharacterSet,然后使用其invertSet修剪掉其中未包含的每个字符。这是一个例子:

NSString *stringWithLettersAndNumbers = @"345345345fff";

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

NSLog(@"%@",newString);

答案 1 :(得分:2)

正则表达式非常适合这类内容:

NSString *orgStr = @"letters34243more32132letters";

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

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

它适用于任何此类角色,无论其在弦乐中的位置如何。在我阅读这个问题时,这就是你所需要的。

模式字符串中的双反斜杠(“\”)是必要的,因为NSString文字需要额外的反斜杠来逃避“真正的”反斜杠。

答案 2 :(得分: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]; 
  }
}