Android通过国家名称获取对应的国旗Emoji

遇到一个需求需要通过国家名称,如"CN"、“US”,来展示国家的国旗Emoji标志。

"CN"展示中国国旗Emoji🇨🇳,"US"展示美国国旗🇺🇸,这在输入法表情里其实很常见。

Emoji 是一种 Unicode 符号。基于 Unicode 字符表,表情符号标志由 26 个字母 Unicode 字符 (A-Z) 组成,旨在用于编码 ISO 3166-1 alpha-2 两字母国家代码 (wiki)。
参考:
https://en.wikipedia.org/wiki/Regional_indicator_symbol
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

这意味着可以拆分两个字母的国家代码并将每个 A-Z 字母转换为区域指示符号字母:
封装了Kotlin方法如下:

    fun String.toCountryFlagEmoji(): String {
        if (this.length != 2) {
            return this
        }
        if (!this[0].isLetter() || !this[1].isLetter()) {
            return this
        }
        val firstLetter = Character.codePointAt(this.uppercase(), 0) - 0x41 + 0x1F1E6
        val secondLetter = Character.codePointAt(this.uppercase(), 1) - 0x41 + 0x1F1E6
        return String(Character.toChars(firstLetter)) + String(Character.toChars(secondLetter))
    }

更多其他语言下写法可参考:https://it.cha138.com/wen2/show-19384121.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值