从字符串中提取价格

时间:2013-11-18 12:15:09

标签: ios regex ios7 nsscanner

我正在寻找一种从NSString中提取产品价格的简便方法。 我尝试过正则表达式,但总会发现一些不匹配的情况。

价格可以是任何数字,包括小数,0 和-1 (有效价格:10,10.99,-1,0)。
NSString可以包含如下字符串:@“产品价格:10.99美元”

谢谢!

3 个答案:

答案 0 :(得分:2)

这将匹配您提供的所有示例

-?\d+(\.\d{2})?

可选择-,后跟1位数字,可选地后跟小数点和2位数。

如果您有其他数字并非数据混入数据,那么我认为正则表达式无法满足您的需求。

答案 1 :(得分:2)

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

显然,如果你在寻找的价值之前有其他数字,你就找不到它。

答案 2 :(得分:0)

假设您的NSString将始终包含$ prep准备结束的价格,以下正则表达式将符合您的需求

* \ $。?(? - ?(\ d +)(\ d {1,2}))

上述正则表达式匹配后,您可以找到match.group(1)作为NSString的价格。