似乎 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,邓肯