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

vld*_*jcc 8 c# unicode hex char

我正在尝试制作一个C#程序,将unicode字符从其十六进制格式转换为单个字符,我有一个问题.这是我的代码:

这有效:

char e = Convert.ToChar("\u0066"); 
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用:

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); 
Run Code Online (Sandbox Code Playgroud)

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

字符串长度必须正好一个字符

任何人都知道如何做到这一点?

Ste*_*gan 6

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

char c = (char)int.Parse(s.Substring(2), NumberStyles.HexNumber);
Run Code Online (Sandbox Code Playgroud)

这将从输入字符串中删除前两个字符并解析剩余的文本.

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

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
}
Run Code Online (Sandbox Code Playgroud)

  • 那也不是.它将允许解析`\ ua`和`\ u1234567890`,它们都不是有效的unicode字符常量. (2认同)
  • 实际上,因此需要首先验证输入值. (2认同)