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

尽管所有其他答案都是正确的,但 OP 似乎很难理解它们,除非它们使用DirectoryPath作为示例。

在 C# 中,\字符用于描述特殊字符,例如\r\n,代表System.Environment.NewLine.

string a = "hello\r\nworld";

// hello
// world

正因为如此,如果你想使用文字\,你需要转义它,使用\\

string a = "hello\\r\\nworld";

// hello\r\nworld

这适用于任何地方,甚至在s 中Regex或 for Paths 中。

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 回答