从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的价格。