首页 > 解决方案 > 如何在运行时将单个 Unicode 代码点转换为字符串?

问题描述

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

这可以写成:

string monkey = "\u1F64A";

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

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

标签: c#

解决方案


当我想在 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);

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


推荐阅读