我已经看到很多例子来解决这个问题,但到目前为止没有一个有效。也许我没有正确地做到这一点。我的代码是:
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标记\\
为转义序列。
有关转义字符的列表,请查看以下页面:
尽管所有其他答案都是正确的,但 OP 似乎很难理解它们,除非它们使用Directory
或Path
作为示例。
在 C# 中,\
字符用于描述特殊字符,例如\r\n
,代表System.Environment.NewLine
.
string a = "hello\r\nworld";
// hello
// world
正因为如此,如果你想使用文字\
,你需要转义它,使用\\
string a = "hello\\r\\nworld";
// hello\r\nworld
这适用于任何地方,甚至在s 中Regex
或 for Path
s 中。
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);
}