用双反斜杠替换单反斜杠
看起来很简单吧? 好吧,我不知道。
这是我正在尝试的代码:
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(@"\",@"\\");
而且我觉得它更简单。
干杯!