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

How to convert two-letter country codes to flag emojis?

我有ISO 3166-1 (alpha-2) country codes, which are two-letter codes, such as "US" and "NL". How do I get the corresponding flag emoji?

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

XXXXXXXX 跳过包含我的原始答案 XXXXXXXX 的这一部分

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

您可以去 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(); //