在C#中,将"\\"替换为"\"

Ily*_*sky 2 c# replace

我有一个字符串:

var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
Run Code Online (Sandbox Code Playgroud)

我想替换\\\.

我试过这个:

path = path.Replace("\\\\", "\\");
path = path.Replace(@"\\", @"\");
Run Code Online (Sandbox Code Playgroud)

这些都不会用单反斜杠替换双反斜杠.

Bot*_*000 10

path不包含任何双反斜线."blah\\blah"实际上是blah\blah.

在普通的字符串文字(不以a开头@)中,你需要通过\在它们前面放一个反斜杠()来转义一些字符.其中一个字符是反斜杠本身,所以如果你想把一个反斜杠放入一个字符串中,你用另一个反斜杠来逃避它,这就是为什么path包含所有那些双反斜杠.在运行时,这些将是单反斜杠.

请参阅此处了解可用的转义序列:C#FAQ:Escpape序列

@另一方面,Verbatim Strings(以th开头)不需要为大多数字符转义.所以@"\"实际上是\.您需要在逐字符串中转义的唯一字符是引号.只需输入双引号即可完成此操作.所以@""""实际上是".

所以,如果你想要放入d:\project\Bloomberg\trunk\UI.Demo\一个字符串,你有两种可能性.

普通字符串文字(注意\被转义):

var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
Run Code Online (Sandbox Code Playgroud)

或逐字字符串文字(无需转义\):

var path = @"d:\project\Bloomberg\trunk\UI.Demo\";
Run Code Online (Sandbox Code Playgroud)