【问题标题】:How do I find a character matching my alt code如何找到与我的 alt 代码匹配的字符
【发布时间】:2018-05-15 20:13:51
【问题描述】:

当我输入 Alt+1 我回来了☺ 我想在代码中使用一些神奇的方式来获取字符串中的 ☺ 字符。

类似这样的:

string smiley = AltCodes.GetAltCodeCharacter(1).ToString();

// Display the Smiley
richTextBoxHappy.Text = smiley;

那么在富文本框中应该有这个:

【问题讨论】:

  • Alt+1 在每个程序中并不意味着相同的东西,因此无论您从何处获取该字符都是特定于该程序的。如果您知道该字符的 unicode,但您可以执行 "\u1F642" 之类的操作来获取该字符。
  • 如果你知道代码,你可以使用&#+代码的格式,像这样:&#200
  • @Cid 我对此表示怀疑,因为问题是用 WPF 标记的,显然 OP 正试图将字符放入文本框中。

标签: c# wpf


【解决方案1】:

您可以使用Unicode Table (Decimal) 找出您的代码,然后像这样使用它:

int i = 9786;
textBoxHappy.Text = ((char)i).ToString();

结果图片:

编辑

当然,您可以创建自定义映射,例如一些 Dictionary<string, int>(或您想要的任何自定义类型),并为其添加代码,如 { "smiley", 9786 },然后使用它 altCode["smiley"]

更新

或者使用enum

enum AltCodes
{
    Smiley = 9786,
    NextSmiley = 9787
}

并像这样使用它:

textBoxHappy.Text = ((char)AltCodes.Smiley).ToString();

您甚至可以创建自定义解码器,然后在 wpf TextBox 中编写您的 alt 代码(通过按住 alt 并输入数字),单击 “解码” 并将您的代码值设置为 int[]例如:

private int[] DecodeCharCode(string str) =>
    DecodeCharCode(str.ToArray());


private int[] DecodeCharCode(char[] chars)
{
    int[] result = new int[chars.Length];
    for (int i = 0; i < chars.Length; i++)
    {
        result[i] = (int)chars[i];
    }
    return result;
}

及用法(点击事件或命令):

int[] decodedCodes = DecodeCharCode(decodingText.Text);

【讨论】:

  • 谢谢☺ :) 这个带有 unicode 表的链接真的很有帮助
【解决方案2】:

There is a finite number of these. 你可以创建一个Dictionary&lt;int, string&gt; 来存储所有这些:

IReadOnlyDictionary<int, string> altCodes = new Dictionary<int, string>() {
    {1, "☺"},
    {2, "\U0000263B"},
    // and so on...
};

然后像这样访问它:

altCodes[1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多