仅在 Swift 中用于带符号的货币的 NumberFormatter

问题描述

我了解 NumberFormatter认行为是,如果您不在该国家/地区,则将国家/地区代码作为符号的一部分包含在内,例如,此测试通过:

func testUSDFromInsideUS() {
    let formatter = NumberFormatter()
    formatter.currencyCode = "USD"
    formatter.numberStyle = .currency
    formatter.locale = Locale(identifier: "en_US")

    XCTAssertEqual("$100.00",formatter.string(from: NSNumber(100)))
}

但是,当区域设置更改为美国以外的国家/地区时,例如 GB,数字格式化程序会将 US 附加到 $ 符号:

func testUSDFromOutsideUS() {
    let formatter = NumberFormatter()
    formatter.currencyCode = "USD"
    formatter.numberStyle = .currency
    formatter.locale = Locale(identifier: "en_GB")

    XCTAssertEqual("$100.00",formatter.string(from: NSNumber(100))) // <-- fails because the value is "US$100.00",but I'd like it to be "$100.00".
}

我查看了 NumberFormatter 文档,但没有看到禁用此行为的属性。我明白这是为了避免与其他美元货币混淆。

我是否必须为此编写自己的 NumberFormatter 子类,或者是否有一种简单的方法可以实现这种行为?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...