0

我想在我的代码中使用Unicode 。我的 Unicode 值为 0100,我正在将我的 Unicode 字符串\u与我的值相加。当我使用 stringmyVal="\u0100"时,它正在工作,但是当我像下面这样使用时,它不起作用。该值看起来像"\\u1000";。我该如何解决这个问题?

我想像下面这样使用它,因为 Unicode 值有时可能会有所不同。

string uStr=@"\u" + "0100";
4

1 回答 1

3

这里有几个问题。一种是@"\u" 实际上是文字字符串"\u"(也可以表示为"\u")。

另一个问题是你不能以你描述的方式构造一个字符串,因为“\u”本身不是一个有效的字符串。编译器期望一个值跟随“\u”(如“\u0100”)来确定编码值应该是什么。

您需要记住,.NET中的字符串是不可变的,这意味着当您使用串联示例 (`@"\u"+"0100") 查看幕后发生的事情时,实际上是这样的发生:

  1. 创建字符串“\u”
  2. 创建字符串“0100”
  3. 创建字符串“\u0100”

所以你在内存中有三个字符串。为了实现这一点,所有字符串都必须有效。

处理这些值时想到的第一个选项是将它们实际解析为整数,然后将它们转换为字符。就像是:

var unicodeValue = (char)int.Parse("0100",System.Globalization.NumberStyles.AllowHexSpecifier);

这将为您提供单个 Unicode 字符值。从那里,您可以将其添加到字符串中,或​​使用ToString().

于 2010-06-22T03:11:12.420 回答