我正在寻找一种从 NSString 中提取产品价格的简便方法。我尝试过正则表达式,但总是发现一些不匹配的情况。
价格可以是任何数字,包括小数、0和 -1(有效价格:10、10.99、-1、0)。
NSString 可以包含如下字符串:@"Prod. price: $10.99"
谢谢!
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
显然,如果您在要查找的值之前有其他数字,您将找不到它。
这将匹配您给出的所有示例
-?\d+(\.\d{2})?
可选地-
,后跟 1 位数字,可选地后跟小数点和 2 位数字。
如果您在数据中混入了不是价格的其他数字,那么我认为正则表达式无法满足您的需求。
假设您的 NSString 将始终包含带有 $ 前缀的价格,以下正则表达式将满足您的需要
.*?\$(-?(\d+)(.\d{1,2})?)
一旦匹配了上述正则表达式,您就可以从 NSString 中找出 match.group(1) 为价格。