0

我需要用单引号替换双引号,以便像这样

\\\\servername\\dir1\\subdir1\\

变成

\\servername\dir1\subdir1\

我试过这个

string dir = "\\\\servername\\dir1\\subdir1\\";
string s = dir.Replace(@"\\", @"\"); 

我得到的结果是

\\servername\\dir1\\subdir1\\

有任何想法吗?

4

3 回答 3

3

你不需要在这里更换任何东西。反斜杠被转义,这就是它们被加倍的原因。
就像\t代表一个制表符,\\代表一个单一的\. 您可以在 MSDN 上查看Escape Sequences 的完整列表。

string dir = "\\\\servername\\dir1\\subdir1\\";
Console.WriteLine(dir);

这将输出\\servername\dir1\subdir1\.

顺便说一句:您可以使用逐字字符串使其更具可读性:

string dir = @"\\servername\dir1\subdir1\";
于 2012-11-20T21:30:00.727 回答
1

替换代码没有问题。你得到的结果是:

\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\\\\";
于 2012-11-20T21:32:20.667 回答
0

该字符串"\\\\servername\\dir1\\subdir1\\"@"\\servername\dir1\subdir1\". 为了转义反斜杠,您需要@在字符串之前使用符号,或者使用双反斜杠而不是一个。

为什么你需要那个?因为在 C# 中用于转义序列的反斜杠。

于 2012-11-20T21:30:50.780 回答