Escaping backslashes in string

只愿长相守 提交于 2019-12-02 09:26:56

问题


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?


回答1:


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));



回答2:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!