转义字符串中的反斜杠

时间:2015-02-10 07:30:34

标签: c# .net string escaping

我想知道什么是在不添加不必要的斜杠的情况下逃避字符串中的斜杠的好方法。

我的意思是,通常如果我想在字符串中转义反斜杠,最简单的方法是使用String.Replace(),如下所示:

string s = someString.Replace("\\", "\\\\");

使用Regex.Replace()的正则表达式可以完成类似的事情。

现在我的问题是,假设我有一个字符串,其中包含一些反斜杠,例如:"C:\some_folder\\some_file.bin"

现在,如果我尝试通过在每次出现之前添加另一个反斜杠来替换反斜杠,我将最终得到以下字符串:

"C:\\some_folder\\\\some_file.bin"

不清楚,\\\\是不必要的,那么如何忽略已经转义的字符呢?

2 个答案:

答案 0 :(得分:2)

我想,这就是你想要做的 -

   string path = @"C:\some_folder\\some_file.bin";
   string exactPath = string.Join("\\",path.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries));

答案 1 :(得分:1)

这是RegEx方法

string Result = Regex.Replace("C:\\some_folder\\\\some_file.bin", "[\\\\]+", "\\");  

在这种情况下,您需要为RegEx和C#转义。或者你可以写

string Result = Regex.Replace(@"C:\some_folder\\some_file.bin",@"[\\]+",@"\");

因为"\\"等于@"\"