1

我已经看到了相反的方向。但是这个我抓不到。我正在尝试获取 web resourcePath 的一部分并将其与本地路径结合起来。让我再解释一下。

public string GetLocalPath(string URI, string webResourcePath, string folderWatchPath) // get the folderwatcher path to work in the local folder
    {
        string changedPath = webResourcePath.Replace(URI, "");
        string localPathTemp = folderWatchPath + changedPath;
        string localPath = localPathTemp.Replace(@"/",@"\");
        return localPath;
    }

但是,当我这样做时,结果就像

C:\\Users

但我想要的是

C:\Users 

不是“\\”,但我的调试显示它像C:\\Users但在控制台中它显示它正如我所期望的那样。想知道原因。。谢谢

4

3 回答 3

7

因为\\是转义序列\

string str  = "C:\\Users";

string str  = @"C:\Users";

后来的一个被称为逐字字符串文字。

对于在代码中组合路径,最好使用Path.Combine而不是手动添加"/"

你的代码应该像

public string GetLocalPath(string URI, string webResourcePath, 
                           string folderWatchPath)
{
    return Path.Combine(folderWatchPath, webResourcePath.Replace(URI, ""));
}

无需替换/为,\因为 Windows 中的路径名都支持。所以C:\Users是一样的C:/Users

于 2012-06-06T08:08:44.470 回答
2

在 C# 中,在-delimited 字符串\中是特殊的。""为了获得\字符串中的文字,您将其加倍。在字符串\中并不特殊,所以and , or and意思完全一样。在您的情况下,调试器显然使用了第二种样式。@""@"\""\\"@"C:\Users""C:\\Users"

于 2012-06-06T08:10:48.993 回答
1

我相信调试会显示带有转义字符的字符串,并且要在\非逐字(不以.@\\

于 2012-06-06T08:10:35.407 回答