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

499 阅读1分钟

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

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

Emoji 是一种 Unicode 符号。基于 Unicode 字符表,表情符号标志由 26 个字母 Unicode 字符 (A-Z) 组成,旨在用于编码 ISO 3166-1 alpha-2 两字母国家代码 (wiki)。

参考:

en.wikipedia.org/wiki/Region… en.wikipedia.org/wiki/ISO_31…

这意味着可以拆分两个字母的国家代码并将每个 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))
    }

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