Objective c 目标C正则表达式删除除数字以外的所有内容
我想删除所有字符,我需要的是0-9之间的数字Objective c 目标C正则表达式删除除数字以外的所有内容,objective-c,nsregularexpression,Objective C,Nsregularexpression,我想删除所有字符,我需要的是0-9之间的数字 您能给我举个例子来解决这个问题吗?您可以创建自己的NSCharacterSet,然后使用它的invertedSet修剪掉其中不包含的每个字符。下面是一个例子: NSString *stringWithLettersAndNumbers = @"345345345fff"; NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"01234567
您能给我举个例子来解决这个问题吗?您可以创建自己的NSCharacterSet,然后使用它的invertedSet修剪掉其中不包含的每个字符。下面是一个例子:
NSString *stringWithLettersAndNumbers = @"345345345fff";
NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *newString = [stringWithLettersAndNumbers stringByTrimmingCharactersInSet:[myCharset invertedSet]];
NSLog(@"%@",newString);
您可以创建自己的NSCharacterSet,然后使用其InversedSet修剪掉其中不包含的每个字符。下面是一个例子:
NSString *stringWithLettersAndNumbers = @"345345345fff";
NSCharacterSet *myCharset = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSString *newString = [stringWithLettersAndNumbers stringByTrimmingCharactersInSet:[myCharset invertedSet]];
NSLog(@"%@",newString);
在字符串中循环并拾取所有数字
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];
}
}
NSMutableString*strResult=[NSMutableString];
对于(int position=0;position循环字符串并拾取所有数字)
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];
}
}
NSMutableString*strResult=[NSMutableString];
对于(int position=0;position,正则表达式非常适合这种类型的东西:
NSString *orgStr = @"letters34243more32132letters";
NSString *result = [orgStr stringByReplacingOccurrencesOfString: @"\\D"
withString: @""
options: NSRegularExpressionSearch
range: NSMakeRange(0, orgStr.length)];
它所做的是查找任何非数字字符(定义为\D
)并将其替换为空字符串,即删除它
不管它在字符串中的位置如何,它对任何这样的字符都是这样做的
模式字符串中的双反斜杠(\)是必需的,因为NSString文本需要一个额外的反斜杠来转义“真实”的反斜杠。正则表达式非常适合这类内容:
NSString *orgStr = @"letters34243more32132letters";
NSString *result = [orgStr stringByReplacingOccurrencesOfString: @"\\D"
withString: @""
options: NSRegularExpressionSearch
range: NSMakeRange(0, orgStr.length)];
它所做的是查找任何非数字字符(定义为\D
)并将其替换为空字符串,即删除它
不管它在字符串中的位置如何,它对任何这样的字符都是这样做的
模式字符串中的双反斜杠(\)是必需的,因为NSString文本需要一个额外的反斜杠来转义“real”一个。谢谢你的示例别担心。请注意unichar与char不同。这个答案不是比OP最初要求的正则表达式更昂贵吗?@abbood很好。我没有比较ASM代码。但我认为正则表达式也无法避免低级别循环。如果我错了,请纠正我。谢谢你的示例否担心。请注意unichar与char是不同的。这个答案不是比像OP最初要求的那样做正则表达式更昂贵吗?@abbood很好。我没有比较ASM代码。但我认为正则表达式也无法避免低级别循环。如果我错了,请纠正我。谢谢你的例子。谢谢你的例子。