将双打更换为单斜杠

时间:2012-06-21 11:39:55

标签: 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());
 Console.WriteLine(name1);

在上面的代码中,双斜杠保持不变,它不会替换为单斜杠,所以在解码后我得到输出为G \ u00f6teborg。

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

1 个答案:

答案 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后跟四个十六进制数字),提取十六进制数字,解析它们并将它们转换为字符。