加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift通过unicode将国家代码转换成表情符号标志

发布时间:2020-12-14 05:41:41 所属栏目:百科 来源:网络整理
导读:我正在寻找一个快速的方式来转换像: let germany = "DE" 成 let flag = "u{1f1e9}u{1f1ea}" 即,D到1f1e9和E映射到1f1ea是什么 我正在查看.utf8的字符串,但这返回一个整数. FWIW我的一般目标是能够使用任意国家代码并获得相应的表情符号标志. 编辑:我也很
我正在寻找一个快速的方式来转换像:
let germany = "DE"

let flag = "u{1f1e9}u{1f1ea}"

即,D到1f1e9和E映射到1f1ea是什么
我正在查看.utf8的字符串,但这返回一个整数.

FWIW我的一般目标是能够使用任意国家代码并获得相应的表情符号标志.

编辑:我也很好,只要持有一个表,做这个映射,如果它可用的地方.我google了,但没有找到它.

这是一个将两个字母的国家/地区代码转换成其表情符号标志的通用公式:
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")

编辑Ooops,不需要通过嵌套的String.UnicodeScalarView结构体.事实证明,String是一个追加方法,正是为了这个目的.所以:

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附加到String的功能,并使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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读