将十六进制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"))
给出错误:
字符串必须正好是一个字符长的
有人知道怎么做吗?
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
(。