用双反斜杠替换单反斜杠

看起来很简单吧? 好吧,我不知道。

这是我正在尝试的代码:

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

但是,我收到一个错误,

ArgumentException未处理 – 在模式结束时解析“\” – 非法\。

我该怎么做呢?

第一个应该是"\\\\" ,而不是"\\" 。 它的工作原理如下:

  • 你写了"\\"
  • 这转换为字符串中的序列\
  • 然后正则表达式引擎读取这个,它转换为反斜杠,它不会逃避任何东西,所以它会抛出一个错误。

使用正则表达式,使用“逐字字符串”要容易得多。 在这种情况下,逐字字符串将是@"\\" 。 使用逐字字符串时,您只需考虑转义正则表达式引擎,因为反斜杠是按字面意思处理的。 第二个字符串也将是@"\\" ,因为它不会被正则表达式引擎解释。

如果你想用一个反斜杠替换一个反斜杠,通过使用@"..."作为字符串文字的格式(也称为逐字字符串),可以更清楚地消除正则表达式中的一级转义。 然后更容易看到

 string output = Regex.Replace(input, @"\\", @"\\"); 

\\\的替代品。

  var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\"); 

第一个参数是字符串\\,在正则表达式中是\。
第二个参数不由正则表达式处理,因此在替换时它将按原样放置。

如果您打算稍后以正则表达式模式使用输入,则最好使用Regex.Encode。

 input = Regex.Escape(input); 

我知道为你提供帮助已经太晚了,也许别人会从中受益。 无论如何这对我有用:

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

而且我觉得它更简单。

干杯!