C# 将严重断裂的管柱更换为\

C# 将严重断裂的管柱更换为\,c#,string,replace,C#,String,Replace,这有什么意义?它用两个替换了一个/个\ ?查找“转义字符”。C#中的\字符是转义字符,因此如果要将其用作\字符,则需要两个,否则下一个字符将被特殊处理(新行等) 请参见字符\是一个特殊字符,它改变了字符串文本中字符后面的含义。因此,当您引用\本身时,需要对其进行转义:\不,它没有 根据C#规则,您看到的是格式正确的字符串,并且由于您看到的输出显示为好像您没有在其前面加上@字符,因此每个反斜杠都会加倍,因为如果您首先需要该字符串,就必须这样编写 创建一个新的控制台应用程序并将结果写入控制台,您将看

这有什么意义?它用两个替换了一个/个\

查找“转义字符”。

C#中的\字符是转义字符,因此如果要将其用作\字符,则需要两个,否则下一个字符将被特殊处理(新行等)


请参见字符
\
是一个特殊字符,它改变了字符串文本中字符后面的含义。因此,当您引用
\
本身时,需要对其进行转义:
\

不,它没有

根据C#规则,您看到的是格式正确的字符串,并且由于您看到的输出显示为好像您没有在其前面加上
@
字符,因此每个反斜杠都会加倍,因为如果您首先需要该字符串,就必须这样编写

创建一个新的控制台应用程序并将结果写入控制台,您将看到字符串看起来像您希望的那样


因此,这只是您如何看待字符串的一个工件(我假设是调试器)。

在这样说之前,您应该三思

string.Replace函数是长期存在的基本功能。。。。每当你发现你有这样的问题时,可能不是功能被破坏了,而是你对它的理解或使用。

它实际上在工作:

"C://test/test/test.png" -> blub

    blub = blub.Replace(@"/", @"\");

result = "C:\\\\test\\test\\test.png"
输出:

string blub = "C://test/test/test.png";
string blub2 = blub.Replace(@"/", @"\");

Console.WriteLine(blub);
Console.WriteLine(blub2);
但是在调试器中查看字符串确实显示了您所描述的效果(以及在没有@的情况下如何在代码中编写字符串文字)

我以前注意到过这一点,但从未发现调试器选择这种格式的原因。

它完成了它应该做的事情。
“\\”
@“\”


“\”是转义字符。如果字符串前面没有逐字标记“@”,则单个\将显示为
“\\”

欢迎来到Stack Overflow,希望您能多呆一会儿,学习并教授:)还有一个提示:当您发现这样的“bug”时,假设是您的代码或假设有缺陷,100次中有99次(至少有99次),这就是问题的根源。在这种情况下,如果字符串替换方法真的像你所说的那样有缺陷,那么它将在很久以前被修复或从库中删除。如果一个如此简单的函数实际上被破坏了,你真的相信你会第一个注意到它吗?哦,还有,“天才”?字符串.Replace不是C#的一部分。它是.NET Framework的一部分。别挑剔了,这是一个简单的错误,我自己也犯了,实际上我做了相反的事情,我将一个错误替换的字符串转储到一个文件中,注意到双转义,认为一切都正常。因为如果调试器没有选择这种格式,它将一直提供不明确的输出。(如果调试器不使用转义字符,它将如何输出包含引号的字符串?)。我想这是有道理的:)感谢调试器的提示,帮助我理解了它。
C://test/test/test.png
C:\\test\test\test.png