C# 将双斜杠替换为单斜杠

C# 将双斜杠替换为单斜杠,c#,C#,在我的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());

在我的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

请帮助找到解决方案。 提前谢谢

string name = "G\\u00f6teborg";
只需删除其中一个反斜杠:

string name = "G\u00f6teborg";
如果您从用户处获得了输入,那么您需要做更多的工作:仅替换反斜杠是不够的,因为这不是字符的内部存储方式,
\uxxx
是表示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
后跟四个十六进制数字),提取十六进制数字,解析它们并将它们转换为一个字符。

您的name变量只包含一个字符slash@downvoter我更正了代码…(如果有评论指出错误,而不仅仅是投反对票,我们将不胜感激!)