I would like to know what is a good way to escape back slashes in a string without adding unnecessary slashes to it.
I mean, usually if I want to escape a backslash in a string, the simplest way is to use String.Replace()
like so:
string s = someString.Replace("\\", "\\\\");
A similar thing can be done with regular expressions using Regex.Replace()
.
Now my question is, lets say I have a string that has some of its back slashes escaped like for example: "C:\some_folder\\some_file.bin"
Now if I try and replace the backslashes in that by adding another backslash before each occurrence, I will end up with the following string:
"C:\\some_folder\\\\some_file.bin"
No clearly, the \\\\
are unnecessary, so how do I go about ignoring already escaped characters?
I think, this is what you want to do-
string path = @"C:\some_folder\\some_file.bin";
string exactPath = string.Join("\\",path.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries));
here is a RegEx Approach
string Result = Regex.Replace("C:\\some_folder\\\\some_file.bin", "[\\\\]+", "\\");
in that case you need to escape for RegEx AND for C#. alternatively you can write
string Result = Regex.Replace(@"C:\some_folder\\some_file.bin",@"[\\]+",@"\");
because "\\"
equals @"\"
来源:https://stackoverflow.com/questions/28426279/escaping-backslashes-in-string