如何将两个字母的国家代码转换为标记表情符号?

时间:2017-11-13 19:37:11

标签: c# .net unicode char emoji

我有ISO 3166-1 (alpha-2)个国家/地区代码,这是两个字母的代码,例如" US"和" NL"。如何获得相应的flag emoji

编辑:我希望不使用国家/地区代码及其相应的表情符号之间的显式映射。 It has been done in JavaScript但我不确定如何在C#中执行此操作。

2 个答案:

答案 0 :(得分:2)

XXXXXXXX跳过本部分,其中包含我的原始答案XXXXXXXX

您需要生成一个交叉引用表或字典,以便您查找相应的表情符号。幸运的是,您似乎已经找到了所需信息的绝佳来源!

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

您可以here查找每个字母的相应unicode符号图表。基本上,您只需为每个字母使用区域指示符号。例如,NZ将是U + 1F1F3(N)+ U + 1F1FF(Z)。如果对该表情符号有支持,则这两个符号被解释为NZ标志。

因为这些字母都是连续的,所以您可以使用正常大写字母的偏移量来计算给定字母的相应代码。您可能已在引用的代码库中看到它:它是127397。因此,' A' +127397是A的区域指标符号。

感谢今天教给我一些新的东西,祝你好运!

答案 1 :(得分:2)

解决方案:

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(); // ??