【发布时间】:2019-05-07 08:21:41
【问题描述】:
我在 Xamarin 应用程序中使用了很棒的字体。 XamarinApp 正在与之交谈的 api 返回一个 fxxx 字符串以指示要显示的图标。在代码中我添加了 \u 但它被视为一个字符串而不是一个 unicode 字符。
var value = "f641";
newLabel.Text = char.Parse($"\\u{value}").ToString();
我尝试了 char.Parse 但它抛出了一个错误:
System.FormatException: 字符串必须正好是一个字符。
有什么建议吗?
【问题讨论】:
-
.NET 字符串是 Unicode。在字符串中插入
\和u只会增加两个字符。我怀疑您将 Unicode 与字符串 literals 中的 Unicode 转义序列混淆了?这些序列代表单个字符。在编译期间,编译器本身会将它们转换为实际字符。f461无论如何都不是有效的 Unicode 转义序列。f641应该是什么? -
这个想法是在 f641 从 api 传递时添加 \u 并将新字符串 \uf641 解析为字符。在 fontawasome 中,它是一些图标。 fontawesome.com/cheatsheet
-
在这种情况下,您可以将实际字符而不是其十六进制值存储为字符串。为什么将
2665存储为例如字符串而不只是键入♥?或者只是将 integer 值存储在某处?如果你不能这样做(为什么?),你可以解析十六进制值,然后使用Char.ConvertFromUtf32 将其转换为字符。 -
@Pana 好点。或者简单地添加一个为您执行此操作的 getter。
标签: c# unicode xamarin.forms font-awesome