0

これを解決する多くの例を見てきましたが、これまでのところうまくいきませんでした。多分私はこれを正しくしていません。私のコードは次のとおりです。

private void button1_Click(object sender, EventArgs e)
{
    string str = "C:\\ssl\\t.txt";
    string str2 = str.Replace("\\","\");
}

私の出力は次のようになります。

C:\ssl\t.txt

4

5 に答える 5

4

のスラッシュstrはすでに単一のスラッシュです。これを行う場合:

Console.WriteLine(str);

あなたが見るでしょう:

C:\ssl\t.txt
于 2013-03-11T12:23:24.843 に答える
3

どうしてそうするか?C 言語では、次\のようにエスケープする必要があります。\\\

string str = "C:\\ssl\\t.txt";

これはと同等です

string str = @"C:\ssl\t.txt";

文字列を出力してみると、実際には

C:\ssl\t.txt
于 2013-03-11T12:25:46.890 に答える
2
string str = "C:\\ssl\\t.txt";

として出力されC:\ssl\t.txtます。C# は、エスケープ シーケンスのために\char をマークします。\\

エスケープ文字のリストについては、次のページを確認してください。

http://blogs.msdn.com/b/csharpfaq/archive/2004/03/12/what-c​​haracter-escape-sequences-are-available.aspx

于 2013-03-11T12:23:39.087 に答える
1

他のすべての答えは正しいですが、例として使用し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

短い答え:
に置き換える必要はありませ\\\
実際、まったく試してはいけません。

于 2013-03-11T13:16:35.003 に答える
0
   private void button1_Click(object sender, EventArgs e)
        {
             string str = "C:\\ssl\\t.txt";

             MessageBox.Show(str);

        }
于 2013-03-11T12:25:16.470 に答える