我正在寻找一种快速的方法来使类似:
let germany = "DE"
进入
let flag = "\u{1f1e9}\u{1f1ea}"
即, 我一直在寻找字符串的Dto 1f1e9和Eto 的映射,但这返回一个整数。1f1ea``.utf8
D
1f1e9
E
1f1ea``.utf8
FWIW我的总体目标是能够采用任意国家/地区代码并获得相应的表情符号标志。
编辑:我也很好,只要持有一个做此映射的表(如果有的话)。我在附近搜索,但没有找到。
这是将两个字母的国家/地区代码转换为其表情符号标志的通用公式:
func flag(country:String) -> String { let base = 127397 var usv = String.UnicodeScalarView() for i in country.utf16 { usv.append(UnicodeScalar(base + Int(i))) } return String(usv) } let s = flag("DE")
编辑 糟糕,无需传递嵌套的String.UnicodeScalarView结构。事实证明String append恰好有一个用于此目的的方法。所以:
append
func flag(country:String) -> String { let base : UInt32 = 127397 var s = "" for v in country.unicodeScalars { s.append(UnicodeScalar(base + v.value)) } return s }
*再次 *编辑 ,在Swift 3中,他们取消了将UnicodeScalar附加到字符串的功能,并且使UnicodeScalar初始化程序失败(Xcode 8种子6),所以现在看起来像这样:
func flag(country:String) -> String { let base : UInt32 = 127397 var s = "" for v in country.unicodeScalars { s.unicodeScalars.append(UnicodeScalar(base + v.value)!) } return String(s) }