У меня есть 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);
Как заставить это работать?
🤔 А знаете ли вы, что...
C# предоставляет средства для тестирования кода и модульного тестирования.
На основе https://stackoverflow.com/a/9303629/199364 попробуйте
= System.Text.RegularExpressions.Regex.Unescape(@"\u" + myCodeString);
Например, если myCodeString
содержит "f135"
, это эквивалентно
= System.Text.RegularExpressions.Regex.Unescape(@"\uf135");
который должен дать вам тот же результат, что и:
= "\uf135";
строка, содержащая этот единственный символ Юникода.