Replace \\ with \ in C#

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 02:13:04

问题


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.


回答1:


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 represents a\b\c\d (it doesn't represent a\\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".




回答2:


Because you declared a without using @, the string a does not contain any double-slashes in your example. In fact, in your example, a == "a\b\c\d", so Replace does not find anything to replace. Try:

string a = @"a\\b\\c\\d";
string b = a.Replace(@"\\", @"\"); 



回答3:


You're wrong. "\\" return \ (know as escaping)

string a = "a\\b\\c\\d";
System.Console.WriteLine(a);  // prints a\b\c\d
string b = a.Replace(@"\\", @"\");  
System.Console.WriteLine(b);  // prints a\b\c\d

You don't even need string b = a.Replace(@"\\", @"\");




回答4:


this works

You don't even need string b = a.Replace(@"\", @"\");

but like if we generate a dos command through c# code... eg:- to delete a file this wil help



来源:https://stackoverflow.com/questions/17918071/replace-with-in-c-sharp

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