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