代码之家  ›  专栏  ›  技术社区  ›  CodeGrue

不带“$”的cocoa nsnumberFormatterCurrencyStyle返回零

  •  3
  • CodeGrue  · 技术社区  · 15 年前

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

    我也遇到了类似的问题。我最终放弃了NSNumberFormatter进行解析,转而使用regexkit-lite,得到了更好的结果。

    在此处获取副本: RegexKit Lite

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

        2
  •  1
  •   Tom Dalling    15 年前

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