如何使用 Swift (macOS) 获取相应货币代码的货币符号。
示例:
- 欧元 = 1.00 欧元
- 美元 = 1.00 美元
- 加元 = 1.00 美元
- 英镑 = 1.00 英镑
我的代码:
var formatter = NSNumberFormatter()
formatter.currencySymbol = getSymbol(currencyCode)
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
let number = NSNumber(double: (amount as NSString).doubleValue)
let amountWithSymbol = formatter.stringFromNumber(number)!
getSymbol(_ currencyCode: String) -> String
或者..有更好的方法吗?
最佳答案
有点晚了,但这是我用来获取货币符号的 $ 而不是 US$ 等的解决方案。
/*
* Bear in mind not every currency have a corresponding symbol.
*
* EXAMPLE TABLE
*
* currency code | Country & Currency | Currency Symbol
*
* BGN | Bulgarian lev | лв
* HRK | Croatian Kuna | kn
* CZK | Czech Koruna | Kč
* EUR | EU Euro | €
* USD | US Dollar | $
* GBP | British Pound | £
*/
func getSymbol(forCurrencyCode code: String) -> String? {
let locale = NSLocale(localeIdentifier: code)
return locale.displayNameForKey(NSLocaleCurrencySymbol, value: code)
}
基本上,这会根据您的货币代码创建 NSLocale
并获取货币的显示属性。如果结果与货币代码匹配,例如 SEK
,它将通过从货币代码中删除最后一个字符并附加“_en”以形成 SE_en
来创建新的国家/地区特定区域设置.然后它将再次尝试获取货币符号。
swift 3 和 4
func getSymbol(forCurrencyCode code: String) -> String? {
let locale = NSLocale(localeIdentifier: code)
if locale.displayName(forKey: .currencySymbol, value: code) == code {
let newlocale = NSLocale(localeIdentifier: code.dropLast() + "_en")
return newlocale.displayName(forKey: .currencySymbol, value: code)
}
return locale.displayName(forKey: .currencySymbol, value: code)
}
关于macos - 使用swift从货币代码中获取货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31999748/