从string中提取价格

我正在寻找一个简短而方便的方式从NSString中提取产品的价格。 我试过正则expression式,但总是发现一些不匹配的情况。

价格可以是任意数字,包括小数,0 和-1 (有效价格:10,10.99,-1,0)。
NSString可以包含一个string,如:@“Prod。price:$ 10.99”

谢谢!

这将匹配你给出的所有例子

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

可以select一个- ,后跟一个数字,可选的是一个小数点和两个数字。

如果你有其他数字不是价格混入数据,那么我认为正则expression式不能满足你的需求。

 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

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

假设你的NSString将总是包含$ prep的价格,那么下面的正则expression式将会匹配你的需要

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

一旦上面的正则expression式匹配,你可以找出match.group(1)是来自NSString的价格。