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?
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.
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 \\
.
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!
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.
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);
精彩评论