遇到一個(gè)需求需要通過(guò)國(guó)家名稱,如"CN"捻浦、"US"晤揣,來(lái)展示國(guó)家的國(guó)旗Emoji標(biāo)志。
"CN"展示中國(guó)國(guó)旗Emoji????朱灿,"US"展示美國(guó)國(guó)旗????昧识,這在輸入法表情里其實(shí)很常見。
Emoji 是一種 Unicode 符號(hào)盗扒」蚶悖基于 Unicode 字符表缀去,表情符號(hào)標(biāo)志由 26 個(gè)字母 Unicode 字符 (A-Z) 組成,旨在用于編碼 ISO 3166-1 alpha-2 兩字母國(guó)家代碼 (wiki)甸祭。
參考:
https://en.wikipedia.org/wiki/Regional_indicator_symbol
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
這意味著可以拆分兩個(gè)字母的國(guó)家代碼并將每個(gè) A-Z 字母轉(zhuǎn)換為區(qū)域指示符號(hào)字母:
封裝了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))
}
更多其他語(yǔ)言下寫法可參考:https://it.cha138.com/wen2/show-19384121.html