【问题标题】:How to convert two-letter country codes to flag emojis?如何将两个字母的国家代码转换为标志表情符号?
【发布时间】: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


    【解决方案1】:

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

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

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

    感谢您今天教会了我一些新东西,祝您好运!

    【讨论】:

    • 该死,我应该在我的问题中提到这一点:我知道它可以在没有桌子的情况下完成。表情符号标志的 Unicode 字符代码设置为允许我们直接转换国家代码的特定代码。我在其他语言(JavaScript、Swift)中找到了它的现有实现,但我对它们的理解不够好,无法知道如何在 C# 中实现。
    • 有趣!幸运的是,答案仍然不是太难。我已经编辑了我的答案。
    【解决方案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(); // ??
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多