You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Objective-C如何将€等货币符号转换为EUR等货币代码并显示在UILabel上

货币符号转对应货币代码(iOS实现方案)
核心逻辑

同一符号可能对应多个货币(如$可对应USD、CAD、AUD等),优先匹配当前设备区域对应的货币,匹配失败后再遍历全局货币规则,最后可通过自定义映射兜底,完全适配区域设置需求。

Swift 实现代码
func currencyCode(from symbol: String, prioritizing locale: Locale = .current) -> String? {
    // 优先匹配当前设备区域的货币,满足区域适配要求
    if let currentCurrencySymbol = locale.currencySymbol,
       currentCurrencySymbol == symbol,
       let currentCode = locale.currencyCode {
        return currentCode
    }
    
    // 全局遍历所有区域匹配对应符号
    for localeId in Locale.availableIdentifiers {
        let tempLocale = Locale(identifier: localeId)
        guard let tempSymbol = tempLocale.currencySymbol,
              tempSymbol == symbol,
              let tempCode = tempLocale.currencyCode else {
            continue
        }
        return tempCode
    }
    
    // 自定义兜底映射,可按需扩展
    let customMappings: [String: String] = [
        "€": "EUR",
        "£": "GBP",
        "¥": "CNY"
    ]
    return customMappings[symbol]
}
调用示例(赋值到UILabel)
// 传入€符号的场景
let inputSymbol = "€"
if let currencyCode = currencyCode(from: inputSymbol) {
    yourTargetLabel.text = currencyCode // 输出 EUR
}

// 设备区域为美国时传入$的场景
let usdSymbol = "$"
if let usdCode = currencyCode(from: usdSymbol) {
    yourTargetLabel.text = usdCode // 输出 USD
}
注意事项
  • 多货币共用同一符号时,默认优先返回当前设备区域对应的货币代码,符合区域适配要求
  • 全局遍历Locale性能损耗极低,可直接在主线程调用,无需异步处理
  • 可按需扩展自定义兜底映射,覆盖冷门货币或者特殊符号的匹配需求

内容的提问来源于stack exchange,提问作者Fabrizio L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:42:01