2012-06-21 96 views
0

在我的C#应用​​程序中,我想将字符串转换为特殊字符。 我的输入字符串是“G \ u00f6teborg”,我想输出为哥德堡。替换双杠到单斜杠

我使用下面的代码,

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

你的名字变量只包含一个斜杠 – gabba

回答

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

+3

@downvoter我纠正了代码......(和一个评论指出错误,而不是只是downvoting会受到赞赏!) –