为什么这个替换反斜杠不起作用?

时间:2012-08-28 20:15:08

标签: c# regex replace filepath backslash

所以我需要从字符串中删除转义的反斜杠(在我的例子中,路径就像“C:\ Program Files(x86)\ Microsoft Office \ Office14 \ WINWORD.EXE \”)。

要替换我已尝试过以下内容:

String openWith = "C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE";

string newString = openWith.Replace(@"\\", @"\");

openWith = openWith.Replace(@"\\", @"\");

openWith = Regex.Replace(openWith,"\\\\","\\");

但这些都不起作用!!有人能够向我解释为什么会这样吗?

提前谢谢!

2 个答案:

答案 0 :(得分:5)

您的字符串不包含加倍的反斜杠。

"C:\\"中的第一个反斜杠是一个转义字符,由C#编译器解释。但是在运行时,字符串只包含单个反斜杠。您可以通过显示字符串的值来证明这一点:

String openWith = "C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE";
Console.WriteLine(openWith);

结果:

C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE

请注意,输出中只有一个反斜杠。

查看在线工作:ideone

答案 1 :(得分:0)

您无需从问题中放置的路径中删除反斜杠。

具有双反斜杠\\的路径是Windows操作系统上有效 IO路径唯一可能的可视化