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";

後者は Verbatim 文字列リテラルとして知られています。

コード内のパスを結合するPath.Combineには、手動で追加する代わりに使用することをお勧めします"/"

あなたのコードは次のようになります

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

Windows のパス名は両方をサポートしているため、/で置き換える必要はありません。と同じ\ですC:\UsersC:/Users

于 2012-06-06T08:08:44.470 に答える
2

C# では、で区切られた文字列\で特別です。文字列で""リテラルを取得するには、それを 2 倍にします。は文字列では特別ではないので、 と、またはとはまったく同じことを意味します。あなたのケースでは、デバッガーは明らかに2番目のスタイルを使用しています。\\@""@"\""\\"@"C:\Users""C:\\Users"

于 2012-06-06T08:10:48.993 に答える
1

デバッグはエスケープ文字を含む文字列を表示し\、 a を非逐語的 (接頭辞が付いていない@) 文字列でエスケープするには、 と書く必要があると思います\\

于 2012-06-06T08:10:35.407 に答える