【问题标题】:How do you convert a single Unicode code point to a string at runtime?如何在运行时将单个 Unicode 代码点转换为字符串?
【发布时间】:2020-06-09 06:15:29
【问题描述】:

假设我有以下代码点:u1F64A(即 ???? 表情符号)。

这可以写成:

string monkey = "\u1F64A";

我如何在运行时将已知代码点(作为整数)转换为字符串?

int codepoint = 0xF64A;
string monkey = //?

【问题讨论】:

    标签: c#


    【解决方案1】:

    当我想在 C# 中使用 Emojis 时,我构建了一个辅助类,如下所示:

    public class Emoji
    {
        readonly int[] codes;
        public Emoji(int[] codes)
        {
            this.codes = codes;
        }
    
        public Emoji(int code)
        {
            codes = new int[] { code };
        }
    
        public override string ToString()
        {
            if (codes == null)
                return string.Empty;
    
            var sb = new StringBuilder(codes.Length);
    
            foreach (var code in codes)
                sb.Append(Char.ConvertFromUtf32(code));
    
            return sb.ToString();
        }
    }
    

    这样我就可以string monkeyEmoji = new Emoji(0xF64A);

    它还支持具有多个代码点的表情符号(是的,那些存在并且很痛苦)

    【讨论】:

      【解决方案2】:

      上面的代码甚至可以编译吗?它不能在我的机器上编译。 为什么要这样,\u1F64A 不是一个有效的字符串。

      我认为string monkey = $"{char.ConvertToUtf32((char) 0xF64, 'A')}" 可行,但这只是猜测。我只是为了澄清你写的第一行代码在我的机器上无法编译。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 2011-10-22
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多