问题描述
我了解 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 (将#修改为@)