【发布时间】:2018-04-26 14:22:16
【问题描述】:
我有ISO 3166-1 (alpha-2) 国家/地区代码,它们是两个字母的代码,例如“US”和“NL”。如何获取对应的flag emoji?
编辑:最好我想在不使用国家代码及其相应表情符号之间的显式映射的情况下执行此操作。 It has been done in JavaScript 但我不知道如何在 C# 中做到这一点。
【问题讨论】:
标签: c# .net unicode char emoji
我有ISO 3166-1 (alpha-2) 国家/地区代码,它们是两个字母的代码,例如“US”和“NL”。如何获取对应的flag emoji?
编辑:最好我想在不使用国家代码及其相应表情符号之间的显式映射的情况下执行此操作。 It has been done in JavaScript 但我不知道如何在 C# 中做到这一点。
【问题讨论】:
标签: c# .net unicode char emoji
XXXXXXXX 跳过包含我的原始答案 XXXXXXXX 的部分
您需要生成一个交叉引用表或字典,以便您查找相应的表情符号。幸运的是,您似乎已经找到了所需信息的绝佳来源!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
您可以前往here 查找每个字母对应的 unicode 符号的图表。基本上,您只需为每个字母使用区域指示符。例如,NZ 将是 U+1F1F3 (N) + U+1F1FF (Z)。如果支持该表情符号,这两个符号将被解释为新西兰国旗。
因为这些字母都是连续的,您可以通过使用与正常大写字母的偏移量来计算给定字母的适当代码。您可能已经在您引用的代码存储库中看到它:它是127397。因此,'A'+127397 是 A 的区域指示符号。
感谢您今天教会了我一些新东西,祝您好运!
【讨论】:
解决方案:
public static string IsoCountryCodeToFlagEmoji(this string country)
{
return string.Concat(country.ToUpper().Select(x => char.ConvertFromUtf32(x + 0x1F1A5)));
}
string gb = "gb".IsoCountryCodeToFlagEmoji(); // ??
string fr = "fr".IsoCountryCodeToFlagEmoji(); // ??
【讨论】: