用双反斜杠替换单反斜杠

Joh*_*nny 19 c# regex string replace backslash

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

这是我正在尝试的代码:

input = Regex.Replace(input, "\\", "\\\\\\");
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误,

ArgumentException未处理 - 在模式结束时解析"\" - 非法\.

我该怎么做呢?

por*_*ges 24

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

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

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


Tom*_*Tom 7

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

string output = Regex.Replace(input, @"\\", @"\\");
Run Code Online (Sandbox Code Playgroud)

是从更换\\\.

  • 这将用 4 个反斜杠替换 1 个反斜杠 (2认同)

小智 6

我知道现在帮助您为时已晚,也许其他人会从中受益。无论如何这对我有用:

text = text.Replace(@"\",@"\\");
Run Code Online (Sandbox Code Playgroud)

我觉得它更简单。

干杯!