我正在寻找一种从NSString中提取产品价格的快捷方法。我尝试过正则表达式,但总是发现一些不匹配的情况。
价格可以是任何数字,包括小数、0和-1(有效价格:10、10.99、-1、0)
NSString可以包含一个字符串,如:@"Prod.price:$10.99"
谢谢!
这将与您给出的的所有示例相匹配
-?d+(.d{2})?
可选-
,后跟1位数字,可选后跟小数点和2位以上数字。
如果数据中包含了其他非价格数字,那么我认为regex无法满足您的需求。
NSString *originalString = @"Prod. price: $10.99";
NSScanner *scanner = [NSScanner scannerWithString:originalString];
NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@"-0123456789"];
[scanner scanUpToCharactersFromSet:numbers intoString:NULL];
double number;
[scanner scanDouble:&number];
数字等于10.99
显然,如果你在寻找的值之前有其他数字,你就找不到了。
假设您的NSString始终包含以$prep结尾的价格,则以下regex将与您的需求相匹配
.*\$(-?(\d+)(.\d{1,2})?)
一旦匹配了上面的正则表达式,您就可以从NSString中找到match.group(1)作为价格。