将十六进制unicode字符转换为其视觉表示形式

本文关键字:视觉 表示 十六进制 unicode 字符 转换 | 更新日期: 2023-09-27 18:01:05

我正试图制作一个C#程序,将unicode字符从十六进制格式转换为单个字符,但我遇到了一个问题。这是我的代码:

这项工作:

char e = Convert.ToChar("'u0066"); 

然而,这不起作用:

Console.WriteLine("enter unicode format character (for example ''u0066)");
string s = Console.ReadLine();
Console.WriteLine("you entered (for example f)");
char c = Convert.ToChar(s); 

因为(Convert.ToChar("''u0066"))给出错误:

字符串必须正好是一个字符长的

有人知道怎么做吗?

将十六进制unicode字符转换为其视觉表示形式

int.Parse不喜欢"''u"前缀,但如果您首先验证以确保它在那里,则可以使用

char c = (char)int.Parse(s.Substring(2), NumberStyles.HexNumber);

这将从输入字符串中剥离前两个字符,并解析剩余的文本。

为了确保序列是有效的,请尝试以下操作:

Regex reg = new Regex(@"^''u([0-9A-Fa-f]{4})$");
if( reg.IsMatch(s) )
{
  char c = (char)int.Parse(s.Substring(2), NumberStyles.HexNumber);
}
else
{
  // Error
}
Convert.ToChar("'u0066");

这在运行时是一个单字符字符串,因为编译器处理了反斜杠序列。

代码的其余部分处理的是Convert.ToChar无法处理的六个字符串{ '''', 'u', '0', '0', '6', '6' }

尝试char.Parse(或者可能是Int16.Parse(s, NumberStyles.AllowHexSpecifier),然后转换为char(。