string.replace严重破坏了

Blu*_*lub 0 c# string replace

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

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

result = "C:\\\\test\\test\\test.png"
Run Code Online (Sandbox Code Playgroud)

这有什么意义?它取代了一个/两个\

Pao*_*olo 9

它实际上工作:

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

Console.WriteLine(blub);
Console.WriteLine(blub2);
Run Code Online (Sandbox Code Playgroud)

输出:

C://test/test/test.png
C:\\test\test\test.png
Run Code Online (Sandbox Code Playgroud)

但是在调试器中查看字符串确实会显示您描述的效果(以及如何在没有@的代码中编写字符串文字).

我之前注意到了这一点,但从未发现为什么调试器会选择这种格式.


ang*_*son 8

不,它没有.

您所看到的是根据C#规则正确格式化的字符串,并且由于您看到的输出显示为没有为@字符添加前缀,因此每个反斜杠都会加倍,因为这就是您需要的如果你想要那首字符串,请写.

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

所以这只是你如何看待字符串的一个神器(我假设调试器).