正在从字符串中提取价格



我正在寻找一种从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)作为价格。

最新更新