可可 NSNumberFormatterCurrencyStyle 不带“$” 返回零
我设置了一个数字格式化程序来将货币字符串转换为十进制值。 问题是,如果文本字符串没有前导美元符号(“$”),它会被转换为 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];
我错过了什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我遇到了类似的问题。 我最终放弃了 NSNumberFormatter 进行解析,转而使用 RegexKit Lite,结果更好。
在此处获取副本:RegexKit Lite
然后转到此处http://regexlib.com/ 并找到最适合您的正则表达式。
I ran into a similar problem. I ended up scrapping the NSNumberFormatter for parsing and switched over to RegexKit Lite with much better results.
Grab a copy here: RegexKit Lite
Then go here http://regexlib.com/ and find the regex that works best for you.
它将“3.50”转换为 0,因为它无法将“3.50”识别为有效的货币字符串,如下所述:http://blog.clickablebliss.com/2006/10/05/the-challenges-of-international-money-in-cocoa/。 如果默认的 NSNumberFormatterCurrencyStyle 不够灵活,无法满足您的需求,您可能需要对其进行子类化来处理这些情况。
It's converting "3.50" to 0 because it doesn't recognize "3.50" as a valid currency string as mentioned here: http://blog.clickablebliss.com/2006/10/05/the-challenges-of-international-money-in-cocoa/. If the default NSNumberFormatterCurrencyStyle isn't flexible enough for your needs, you may need to subclass it to handle these cases.