Replace single backslash with double backslash
Solution 1
The first one should be "\\\\"
, not "\\"
. It works like this:
- You have written
"\\"
. - This translates to the sequence
\
in a string. - The regex engine then reads this, which translates as backslash which isn't escaping anything, so it throws an error.
With regex, it's much easier to use a "verbatim string". In this case the verbatim string would be @"\\"
. When using verbatim strings you only have to consider escaping for the regex engine, as backslashes are treated literally. The second string will also be @"\\"
, as it will not be interpreted by the regex engine.
Solution 2
If you want to replace one backslash with two, it might be clearer to eliminate one level of escaping in the regular expression by using @"..."
as the format for your string literals, also known as a verbatim string. It is then easier to see that
string output = Regex.Replace(input, @"\\", @"\\");
is a replacement from \
to \\
.
Solution 3
I know it's too late to help you, maybe someone else will benefit from this. Anyway this worked for me:
text = text.Replace(@"\",@"\\");
and I find it even more simplier.
Cheers!
Solution 4
var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");
The first parameter is string \\ which is \ in regex.
The second parameter is not processed by regex, so it will put it as is, when replacing.
Solution 5
If you intend to use the input in a regex pattern later, it can be a good idea to use Regex.Encode.
input = Regex.Escape(input);
Johnny
Updated on July 09, 2022Comments
-
Johnny almost 2 years
It seems simple enough, right? Well, I don't know.
Here's the code I'm trying:
input = Regex.Replace(input, "\\", "\\\\\\");
However, I'm receiving an error,
ArgumentException was unhandled - parsing "\" - Illegal \ at end of pattern.
How do I do this?
-
Alex Aza almost 13 yearsThis will replace 1 backslash with 4 backslashes