HOWTO: преобразовать представление символов Юникода в строке в фактический символ Юникода - PullRequest
1 голос
/ 07 мая 2019

Я использую шрифт в приложении Xamarin.API, к которому обращается XamarinApp, возвращает строку fxxx, чтобы указать, какой значок показывать.В коде я добавляю \ u, но он выглядит как строка, а не как символ Юникода.

    var value = "f641";
    newLabel.Text = char.Parse($"\\u{value}").ToString();

Я попытался использовать char.Parse, но выдает ошибку:

Система.FormatException: строка должна быть ровно одного символа.

Есть предложения?

1 Ответ

1 голос
/ 07 мая 2019

Вы хотите, чтобы Char содержал значение кодовой точки личного пользования U + F641 .

Вы можете сделать это, проанализировав его как шестнадцатеричное значение, которое оно представляет:

var input = "f641";
int p = int.Parse(input, System.Globalization.NumberStyles.HexNumber); // 63041

А затем преобразовать его в Char:

char c = (char)p;

В зависимости от диапазона возможных кодовых точек в char может не хватить места для хранения кодовой точки, поэтому, как указывает @Panagiotis, используйте Char.ConvertFromUtf32(int):

string chars = Char.ConvertFromUtf32(p);

Но тогда у вас будет строка, а не один символ.

...