我设置了一个数字格式器,用于将货币字符串转换为十进制值。问题是如果文本字符串没有前导美元符号(“$”),它将转换为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];
我错过了什么吗?
答案 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/找到最适合你的正则表达式。