ios - 如何在 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 美元
你能帮我解决这个问题吗?
解决方案
如果您想要货币代码和区域设置的默认值以外的货币符号,您可以使用 的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
.
推荐阅读
- html - 动画网格列:强制到屏幕边框
- c++ - 为自定义 PyTorch 激活函数启动正确数量的 CUDA 块
- xamarin - 为什么我在 iOS 中的 PhoneDialer.Open 中出现 FeatureNotSupported 异常,但在 Xamarin Forms 中的 Android 中工作正常?
- php - 如何在 Codeigniter 中获取特定的行数据
- wpf - 为 Web-API 和 WPF 客户端 APP 使用一个 AAD 应用注册
- python - 如何删除不在另一个数据框中的数据框行?
- python - 如何在 python manage.py 的 bash 脚本中输入提示
- python - 我如何将数据发送到电报?
- linkedin - AdCreativesV2 Batch GET API 返回 400 BAD REQUEST -“无法处理涉及多个路由实体的请求”
- flutter - 扩展超类型的 dart mixin,导致客户端类必须实现超类型的方法