我需要将双引号替换为单引号,以便像这样
\\\\servername\\dir1\\subdir1\\
变为
\\servername\dir1\subdir1\
我试过这个
string dir = "\\\\servername\\dir1\\subdir1\\";
string s = dir.Replace(@"\\", @"\");
我得到的结果是
\\servername\\dir1\\subdir1\\
有什么想法吗?
答案 0 :(得分:3)
您无需在此更换任何内容。反斜杠被转义,这就是它们加倍的原因
就像\t
代表制表符一样,\\
代表一个\
。您可以看到转义序列 on MSDN的完整列表。
string dir = "\\\\servername\\dir1\\subdir1\\";
Console.WriteLine(dir);
这将输出\\servername\dir1\subdir1\
。
BTW:您可以使用逐字字符串使其更具可读性:
string dir = @"\\servername\dir1\subdir1\";
答案 1 :(得分:1)
替换代码没有问题。你得到的结果是:
\servername\dir1\subdir1\
当您在调试器中查看结果时,它显示为将写为文字字符串,因此反斜杠字符显示为两个反斜杠字符。
您创建的字符串不是您认为的那样。这段代码:
string dir = "\\\\servername\\dir1\\subdir1\\";
生成一个包含以下内容的字符串:
\\servername\dir1\subdir1\
替换代码会替换字符串开头的\\
。
如果要生成字符串\\\\servername\\dir1\\subdir1\\
,请使用:
string dir = @"\\\\servername\\dir1\\subdir1\\";
或:
string dir = "\\\\\\\\servername\\\\dir1\\\\subdir1\\\\";
答案 2 :(得分:0)
此字符串"\\\\servername\\dir1\\subdir1\\"
与@"\\servername\dir1\subdir1\"
相同。为了逃避反斜杠,你需要在字符串前使用@
符号,或者使用双反斜杠而不是一个。
为什么需要它?因为用于escape sequences的C#反斜杠。