0

このようなものになるように、二重引用符を一重引用符に置き換える必要があります

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

になる

\\servername\dir1\subdir1\

私はこれを試しました

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

私が得る結果は

\\servername\\dir1\\subdir1\\

何か案は?

4

3 に答える 3

3

ここでは何も置き換える必要はありません。バックスラッシュはエスケープされているため、二重になっています。タブレータを表すの
と同じように、単一のを表します。MSDNでエスケープ シーケンスの完全なリストを確認できます。\t\\\

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\

デバッガーで結果を見ると、リテラル文字列として書き込まれるように表示されるため、バックスラッシュ文字は 2 つのバックスラッシュ文字として表示されます。

あなたが作成した文字列は、あなたが思っているものではありません。このコード:

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\"です。@バックスラッシュをエスケープするには、文字列の前にシンボルを使用するか、バックスラッシュを 1 つではなく 2 つ使用する必要があります。

なぜそれが必要なのですか?C# ではバックスラッシュがエスケープ シーケンスに使用されるためです。

于 2012-11-20T21:30:50.780 に答える