似乎 NSNumberFormatter 无法将欧元(可能还有其他)货币字符串解析为数字类型。有人可以证明我错了吗?
我尝试使用以下方法从货币字符串中获取数字金额:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currencyNumber = [currencyFormatter numberFromString:currencyString];
这对于英国和美国货币金额来说效果很好。它甚至可以毫无问题地处理 $ 和 £ 以及千位分隔符。
但是,当我将其与欧元货币金额一起使用时(在设置应用程序中将区域格式设置为法国或德国),它会返回一个空字符串。以下所有字符串均失败:
12,34 €
12,34
12.345,67 €
12.345,67
值得注意的是,这些字符串与使用相应区域设置时 NSNumberFormatter 的 stringFromNumber 方法得出的字符串完全匹配。
在设置应用程序中将“区域格式”设置为“法国”,然后在以下代码中将“货币编号”设置为“12.34”,将导致“货币字符串”设置为“12,34 €”:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
显然,专门针对欧元解决这个问题相当容易,但我希望在尽可能多的国家/地区销售该应用程序,并且我认为其他地区必然会发生类似的情况。
有人有答案吗?
蒂亚,邓肯