【发布时间】:2011-04-03 10:00:40
【问题描述】:
似乎 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 方法输出的内容完全匹配。
在设置应用中将 Region Format 设置为 France,然后在以下代码中将 currencyNumber 设置为 12.34,导致 currencyString 设置为 '12,34 €':
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
显然,专门针对欧元解决此问题相当容易,但我希望在尽可能多的国家/地区销售此应用程序,并且我认为其他地区肯定会发生类似情况。
有人有答案吗?
TIA,邓肯
【问题讨论】:
-
我还没有找到解决方案,所以任何输入都将不胜感激。谢谢,邓肯
-
我建议提交错误报告。
标签: iphone objective-c cocoa currency nsnumberformatter