没有“$”的Cocoa NSNumberFormatterCurrencyStyle返回零

时间:2009-07-20 22:35:23

标签: cocoa numbers currency formatter

我设置了一个数字格式器,用于将货币字符串转换为十进制值。问题是如果文本字符串没有前导美元符号(“$”),它将转换为0,而不是有效的匹配数字。所以:

"$3.50" converts to 3.50
 "3.50" converts to 0

以下是转换器的代码:

// formatter to convert a value to and from a currency string
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormatter setGeneratesDecimalNumbers:YES];

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

它将“3.50”转换为0,因为它不会将“3.50”识别为有效的货币字符串,如下所述:http://blog.clickablebliss.com/2006/10/05/the-challenges-of-international-money-in-cocoa/。如果默认的NSNumberFormatterCurrencyStyle不够灵活,无法满足您的需求,您可能需要对其进行子类化以处理这些情况。

答案 1 :(得分:1)

我遇到了类似的问题。我最终废弃NSNumberFormatter进行解析并切换到RegexKit Lite,效果更好。

在此处抓取一份副本:RegexKit Lite

然后到这里http://regexlib.com/找到最适合你的正则表达式。