遇到一个需求需要通过国家名称,如"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…