C# 将单反斜杠替换为双反斜杠
看起来很简单,对吧?嗯,我不知道 以下是我正在尝试的代码:C# 将单反斜杠替换为双反斜杠,c#,regex,string,replace,backslash,C#,Regex,String,Replace,Backslash,看起来很简单,对吧?嗯,我不知道 以下是我正在尝试的代码: input = Regex.Replace(input, "\\", "\\\\\\"); 但是,我收到一个错误 ArgumentException未经处理-在模式末尾解析“\”-非法 怎么做?第一个应该是“\\\\”,而不是“\\\”。它的工作原理如下: 您已经编写了“\\” 这将转换为字符串中的序列\ 然后,正则表达式引擎读取该值,该值被翻译为反斜杠,不会转义任何内容,因此它会抛出一个错误 有了正则表达式,使用“逐字字符串”就
input = Regex.Replace(input, "\\", "\\\\\\");
但是,我收到一个错误
ArgumentException未经处理-在模式末尾解析“\”-非法
怎么做?第一个应该是
“\\\\”
,而不是“\\\”
。它的工作原理如下:
- 您已经编写了
“\\”
- 这将转换为字符串中的序列
\
- 然后,正则表达式引擎读取该值,该值被翻译为反斜杠,不会转义任何内容,因此它会抛出一个错误
@“\\”
。当使用逐字字符串时,只需考虑ReEX引擎的转义,因为反斜线是按字面处理的。第二个字符串也将是@“\\”
,因为它不会被正则表达式引擎解释
var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");
第一个参数是字符串\\,它位于正则表达式中。第二个参数不是由正则表达式处理的,因此在替换时它将保持原样。如果您想用两个反斜杠替换一个反斜杠,那么使用
@“…”
作为字符串文本(也称为逐字字符串)的格式,可以更清楚地消除正则表达式中的一级转义。这样更容易看出这一点
string output = Regex.Replace(input, @"\\", @"\\");
是从
\
到\
的替换。如果以后打算在regex模式中使用输入,最好使用regex.Encode
input = Regex.Escape(input);
我知道现在帮你已经太晚了,也许其他人会从中受益。不管怎样,这对我来说很有效:
text = text.Replace(@"\",@"\\");
我发现这更简单
干杯 先生,你真是个天才!真棒的解释。我感到困惑的是第二个字符串没有被正则表达式引擎解释。一切都按我现在需要的方式工作。除非你在同一模式下做更复杂的事情,否则你是否考虑过
input=input.Replace(@“\”,@“\”)代码>?这将用4个反斜杠替换1个反斜杠