I have a long string (a path) with double backslashes, and I want to replace it with single backslashes:
string a = "a\\b\\c\\d";
string b = a.Replace(@"\\", @"\");
This code does nothing...
b
remains "a\\b\\c\\d"
I also tried different combinations of backslashes instead of using @
, but no luck.
In C#, you can't have a string like
"a\b\c\d"
, because the\
has a special meaning: it creates a escape sequence together with a following letter (or combination of digits).\b
represents actually a backspace, and\c
and\d
are invalid escape sequences (the compiler will complain about an "Unrecognized escape sequence").So how do you create a string with a simple
\
? You have to use a backslash to espace the backslash:\\
(it's the espace sequence that represents a single backslash).That means that the string
"a\\b\\c\\d"
actually representsa\b\c\d
(it doesn't representa\\b\\c\\d
, so no double backslashes). You'll see it yourself if you try to print this string.C# also has a feature called verbatim string literals (strings that start with
@
), which allows you to write@"a\b\c\d"
instead of"a\\b\\c\\d"
.