看起来很简单吧?好吧,我不知道。
这是我正在尝试的代码:
input = Regex.Replace(input, "\\", "\\\\\\");
但是,我收到错误,
ArgumentException未处理 - 在模式结束时解析“\” - 非法\。
我该怎么做?
答案 0 :(得分:24)
第一个应该是"\\\\"
,而不是"\\"
。它的工作原理如下:
"\\"
。\
。使用正则表达式,使用“逐字字符串”要容易得多。在这种情况下,逐字字符串将是@"\\"
。使用逐字字符串时,您只需考虑转义正则表达式引擎,因为反斜杠是按字面处理的。第二个字符串也将是@"\\"
,因为它不会被正则表达式引擎解释。
答案 1 :(得分:7)
如果要将一个反斜杠替换为两个,则使用@"..."
作为字符串文字的格式(也称为逐字字符串),可以更清楚地消除正则表达式中的一级转义。然后更容易看到
string output = Regex.Replace(input, @"\\", @"\\");
是从\
到\\
的替代。
答案 2 :(得分:3)
var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");
第一个参数是字符串\\,在正则表达式中是\ 第二个参数不是由正则表达式处理的,因此在替换时它会按原样放置。
答案 3 :(得分:2)
如果您打算稍后在正则表达式模式中使用输入,则最好使用Regex.Encode。
input = Regex.Escape(input);
答案 4 :(得分:0)
我知道为你提供帮助为时已晚,也许别人会从中受益。无论如何,这对我有用:
text = text.Replace(@"\",@"\\");
我觉得它更简单。
干杯!