【问题标题】:How to revert back from currency format, Android?如何从货币格式恢复,Android?
【发布时间】:2016-06-26 19:17:38
【问题描述】:

我正在开发使用这种方法的 Android 应用:

public static String currencyFormat(BigDecimal n) {
    return NumberFormat.getCurrencyInstance().format(n);
}

根据区域设置货币格式化数字。

如何从货币格式恢复,例如35 美元,到 35 美元?请注意,我不能只删除第一个字符,因为不同的语言环境具有不同的货币名称长度。

【问题讨论】:

  • 您需要单独存储货币符号。要么,要么使用字符串作为输入(我不推荐)。您不能使用 BigDecimal 作为您的货币输入,因为这只会为您提供附加到货币金额的 unicode 值。
  • 好吧,我提供的这段代码运行良好,但确实我不能使用 BigDecimal 进行转换,因为字符串中会包含货币字符。不过我有个主意。有没有办法获取代表您所在地区货币的字符串?然后我可以做 string.replaceAll(currency, "");

标签: android format


【解决方案1】:

您必须将货币单位存储在单独的字段中,封装到一些更高阶的抽象中,例如最终值类(定义了适当的等号和哈希码),例如称为 CurrencyAmount。 [如果你做 scala,基本上你想要一个案例类]。任何其他解决方案都需要您从金额部分“逆向工程”单位部分,并且根据您的允许值规范的复杂性,它可能仅在不同程度上是可靠的。我只会在他们自己的字段中对这两个部分进行编码,并为所有情况解决这个问题。

【讨论】:

    【解决方案2】:

    您可以尝试使用正则表达式从字符串中删除所有非数字字符。

    试试this

    【讨论】:

    • 这就是问题所在,字符串是一个数学表达式,其中可能包含“sin”、“cos”等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多