【发布时间】:2019-08-05 04:11:42
【问题描述】:
我有一系列国家/地区,它们以 3 个字母为我提供国家/地区代码(ISO 3166-1 alpha-3 国家/地区代码)。
例如。 “USA”代表美利坚合众国
我有一种方法可以给我 2 个字母的标志表情符号/字符串,即“US”而不是“USA”。
以下方法适用于 2 个字母的国家/地区代码,但不适用于 3 个字母。
func flag(countryCode: String) -> String? {
var string = ""
let country = countryCode.uppercased()
let regionalA = "????".unicodeScalars
let letterA = "A".unicodeScalars
let base = regionalA[regionalA.startIndex].value - letterA[letterA.startIndex].value
for scalar in country.unicodeScalars {
guard let regionalScalar = UnicodeScalar(base + scalar.value) else { return nil }
string.unicodeScalars.append(regionalScalar)
}
return string.isEmpty ? nil : string
}
如何从 3 个字母的国家代码获得标志?
【问题讨论】:
-
您可以将 3 字母代码用作字典的键,将 2 字母代码用作值。
-
@Magnas 可以,但我正在寻找更有效的方法。
-
这些标志(显然)基于两个字母(alpha-2)的国家代码,所以您的实际问题是“如何将三个字母的国家代码转换为两个字母的代码? ”
-
@MartinR 是的。我知道通过将 3 个字母与 2 个字母代码映射然后得到一个表情符号,但我正在寻找是否有可用的本地解决方案。