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})?)
上記の正規表現が一致すると、match.group(1) が NSString からの価格であることがわかります。