在我的c#应用程序中,我想将字符串字符转换为特殊字符。 我的输入字符串是“G \ u00f6teborg”,我希望输出为Göteborg。
我正在使用下面的代码,
string name = "G\\u00f6teborg";
StringBuilder sb = new StringBuilder(name);
sb = sb.Replace(@"\\",@"\");
string name1 = System.Web.HttpUtility.HtmlDecode(sb.ToString());
Console.WriteLine(name1);
在上面的代码中,双斜杠保持不变,它不会替换为单斜杠,所以在解码后我得到输出为G \ u00f6teborg。
请帮助找到解决方案。 提前谢谢。
答案 0 :(得分:1)
string name = "G\\u00f6teborg";
只需删除其中一个反斜杠:
string name = "G\u00f6teborg";
如果您收到了用户的输入,那么您需要做更多的事情:替换反斜杠是不够的,因为这不是内部存储字符的方式,\uXXXX
是转义序列表示Unicode代码点。
如果要通过Unicode代码点替换用户输入转义序列,则需要正确解析用户输入。您可以使用正则表达式:
MatchEvaluator replacer = m => ((char) int.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier)).ToString();
string result = Regex.Replace(name, @"\\u([a-fA-F0-9]{4})", replacer);
匹配每个转义组(\u
后跟四个十六进制数字),提取十六进制数字,解析它们并将它们转换为字符。