0

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

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

4

1 回答 1

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

于 2012-06-21T11:43:32.007 回答