首页 > 解决方案 > 如何在 NSnumberFormatter 中显示“$”而不是“US$”?

问题描述

我使用下面的代码从 NSnumber 转换为具有语言环境的货币。

let price = 12.34 as NSNumber
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "USD"
formatter.locale = NSLocale(localeIdentifier: "zh_CN") as Locale
print(formatter.string(from: price)!)

预期产出:12.34 美元,实际产出:12.34 美元

你能帮我解决这个问题吗?

标签: iosswiftcurrencynsnumberformatterchinese-locale

解决方案


如果您想要货币代码和区域设置的默认值以外的货币符号,您可以使用 的currencySymbol属性手动指定NumberFormatter

let price = 12.34
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = "USD"
formatter.locale = Locale(identifier: "zh_CN")
formatter.currencySymbol = "$"
print(formatter.string(for: price) ?? "nil") // "$12.34"

对您的代码的其他改进:不要NSLocale在 Swift 中使用,Locale而是使用,尤其是当您立即NSLocale转换时。Locale您也不需要将数字转换为NSNumber只是格式化它们,您只需要调用NumberFormatter.string(for:)而不是string(from:)在使用NSNumber.


推荐阅读