Как найти символ, соответствующий моему альт-коду - PullRequest
0 голосов
/ 15 мая 2018

Когда я набираю Alt + 1 , я возвращаюсь ☺ Я бы хотел, чтобы в коде был какой-то магический способ получить символ in в строке.

Что-то вродеэто:

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

// Display the Smiley
richTextBoxHappy.Text = smiley;

Тогда в поле расширенного текста должно быть это:

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Их существует конечное число. Вы можете просто создать Dictionary<int, string> для хранения всех этих:

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

И получить к нему доступ так:

altCodes[1]
0 голосов
/ 15 мая 2018

Вы можете использовать Unicode Table (Decimal) , чтобы узнать свой код, а затем использовать его, например, так:

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

Результат изображения:

enter image description here

Редактировать

Конечно, вы можете создать свое собственное отображение, например, Dictionary<string, int> (или любой другой пользовательский тип, который вы хотите), и добавить к нему коды вроде { "smiley", 9786 }, а затем использовать его altCode["smiley"].

Обновление

Или используйте enum для этого:

enum AltCodes
{
    Smiley = 9786,
    NextSmiley = 9787
}

и используйте его как:

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

Вы даже можете создать свой собственный декодер, затем написать свой alt-код (удерживая alt и печатая цифры) внутри wpf TextBox, нажать «Декодировать» и получить значения своего кода в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...