これを解決する多くの例を見てきましたが、これまでのところうまくいきませんでした。多分私はこれを正しくしていません。私のコードは次のとおりです。
private void button1_Click(object sender, EventArgs e)
{
string str = "C:\\ssl\\t.txt";
string str2 = str.Replace("\\","\");
}
私の出力は次のようになります。
C:\ssl\t.txt
これを解決する多くの例を見てきましたが、これまでのところうまくいきませんでした。多分私はこれを正しくしていません。私のコードは次のとおりです。
private void button1_Click(object sender, EventArgs e)
{
string str = "C:\\ssl\\t.txt";
string str2 = str.Replace("\\","\");
}
私の出力は次のようになります。
C:\ssl\t.txt
のスラッシュstr
はすでに単一のスラッシュです。これを行う場合:
Console.WriteLine(str);
あなたが見るでしょう:
C:\ssl\t.txt
どうしてそうするか?C 言語では、次\
のようにエスケープする必要があります。\\
\
string str = "C:\\ssl\\t.txt";
これはと同等です
string str = @"C:\ssl\t.txt";
文字列を出力してみると、実際には
C:\ssl\t.txt
string str = "C:\\ssl\\t.txt";
として出力されC:\ssl\t.txt
ます。C# は、エスケープ シーケンスのために\
char をマークします。\\
エスケープ文字のリストについては、次のページを確認してください。
他のすべての答えは正しいですが、例として使用しDirectory
ない限り、OPはそれらを理解するのが難しいようです。Path
C# では、この\
文字は、を表す などの特殊文字\r\n
を表すために使用されSystem.Environment.NewLine
ます。
string a = "hello\r\nworld";
// hello
// world
そのため、リテラルを使用する場合は\
、エスケープする必要があります。\\
string a = "hello\\r\\nworld";
// hello\r\nworld
これはEVERYWHEREに適用されRegex
ますPath
。
System.IO.Directory.CreateDirectory("hello\r\nworld"); // System.ArgumentException
// Obviously, since new lines are invalid in file names or paths
System.IO.Directory.CreateDirectory("hello\\r\\nworld");
// Will create a directory "nworld" inside a directory "r" inside a directory "hello"
場合によっては、リテラルのみを気にすることがあります。\
そのため、常に記述\\
しているとかなり疲れ、コードのデバッグが困難になります。これを避けるために、逐語的な文字を使用します。@
string a = @"hello\r\nworld";
// hello\r\nworld
短い答え:
に置き換える必要はありませ\\
ん\
。
実際、まったく試してはいけません。
private void button1_Click(object sender, EventArgs e)
{
string str = "C:\\ssl\\t.txt";
MessageBox.Show(str);
}