不带“$”的 Cocoa NSNumberFormatterCurrencyStyle 返回零

Posted

技术标签:

【中文标题】不带“$”的 Cocoa NSNumberFormatterCurrencyStyle 返回零【英文标题】:Cocoa NSNumberFormatterCurrencyStyle without "$" return zero 【发布时间】:2009-07-20 22:35:23 【问题描述】:

我设置了一个数字格式化程序,用于将货币字符串转换为十进制值。问题是如果文本字符串没有前导美元符号(“$”),它会被转换为 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];

我错过了什么吗?

【问题讨论】:

【参考方案1】:

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

在此处获取副本:RegexKit Lite

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于不带“$”的 Cocoa NSNumberFormatterCurrencyStyle 返回零的主要内容,如果未能解决你的问题,请参考以下文章

cocoa 和 cocoa touch的区别

静态 cocoa/cocoa-touch 库应该基于啥样的 SDK?

Cocoa设计模式(iOS常用设计模式) Cocoa Design Patterns

合理的 Cocoa 和 Cocoa Touch 默认值

在 Cocoa/Cocoa Touch 中监控目录

在我们的 Cocoa/Cocoa-touch 应用程序中注册的应用程序委托在哪里