RUDE

Код Font Awesome в виде строки не отображается должным образом

У меня есть Label вот так:

              new Label
                {
                    FontFamily = FontAwesome.Light,
                    FontSize = 50,
                    TextColor = Palette.Common.Accent,
                    BackgroundColor = Color.Transparent,
                    HorizontalTextAlignment = TextAlignment.Start,
                    VerticalTextAlignment = TextAlignment.Center,
                    HorizontalOptions = LayoutOptions.Start,
                    VerticalOptions = LayoutOptions.Center
                }
                .Bind(Label.TextProperty, nameof(MyFieldModel.iconCode))

iconCode в MyFieldModel есть string.

string iconCode = "f135";

Это просто отображается как буквальная строка f135 вместо Rocket. (f135 — это код ракеты в fontawesome).

Но когда я меняю его на:

string iconCode = "\uf135";

Он отображается как Ракета.

Если я получу ввод кода значка как string, например «f135». Как преобразовать его в формат \uf135 в коде.

Я пробовал все следующее, и никто не работает:

// try 1
string iconCode = "\\u" + myCodeString;
// try 2
string iconCode = @"\u" + myCodeString;
// try 3
StringBuilder sb = new StringBuilder();
sb.AppendFormat("U+{0:X4} ", iconCode);

Как заставить это работать?


38
1

Ответ:

Решено

На основе https://stackoverflow.com/a/9303629/199364 попробуйте

= System.Text.RegularExpressions.Regex.Unescape(@"\u" + myCodeString);

Например, если myCodeString содержит "f135", это эквивалентно

= System.Text.RegularExpressions.Regex.Unescape(@"\uf135");

который должен дать вам тот же результат, что и:

= "\uf135";

строка, содержащая этот единственный символ Юникода.