【问题标题】:Escaping backslashes in string转义字符串中的反斜杠
【发布时间】:2015-02-10 07:30:33
【问题描述】:

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

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

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

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

现在我的问题是,假设我有一个字符串,它的一些反斜杠已转义,例如:"C:\some_folder\\some_file.bin"

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

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

显然,\\\\ 是不必要的,那么我该如何忽略已经转义的字符?

【问题讨论】:

  • @DmitryBychenko 谁说过\t
  • 你有没有尝试过任何解决方案?

标签: c# .net string escaping


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这是一个正则表达式方法

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 2012-01-26
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多