0

我正在尝试将 xml 字符实体转换为 C# char ...

string charString = "₁".Replace("&#", "\\").Replace(";", "");
char c = Convert.ToChar(charString);

我不知道为什么它在 Convert.Char 线上失败。即使调试器按原样显示 charString "\\\\x2081""\x2081"这是一个有效的 Unicode 字符。例外是字符太多。

4

2 回答 2

5

的文档ToChar(string)非常易读:

将指定字符串的第一个字符转换为 Unicode 字符。

还:

FormatException –的长度不是 1。

它不会将您的角色的十六进制表示转换为所述角色。它将接受一个字符的字符串并将该字符返回给您。做的一样s[0]

你想要的是:

string hex = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(hex, 16);
于 2012-11-19T07:24:36.183 回答
0

Convert.ToChar(value)值是长度为 1 的字符串。但charString长度"\\x2081"超过 1。似乎"₁"是 Unicode 十六进制字符代码(Unicode 十六进制字符代码₁)。所以你必须这样做:

string charString = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(charString , NumberStyles.HexNumber);

注意:它是 HTML 实体(十六进制)SUBSCRIPT ONE(参见上面的链接 ^_^)

于 2012-11-19T08:06:28.720 回答