如何在字符串中写反斜杠(\)?

54 c# string winforms

我想写这样的事情C:\Users\UserName\Documents\Taskstextbox:

txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks";
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法识别的转义序列.

如何在字符串中写反斜杠?

Chr*_*air 88

反斜杠("\")字符是一个特殊的转义字符,用于表示其他特殊字符,如新行(\n),制表符(\t)或引号(\").如果要包含反斜杠字符本身,则需要两个反斜杠或使用@逐字字符串:"\\Tasks"@"\Tasks".

阅读MSDN文档/ C#规范,该规范讨论使用反斜杠字符转义的字符以及逐字字符串文字的使用.

一般来说,大多数C#.NET开发人员倾向于@在构建文件/文件夹路径时使用逐字字符串,因为它使他们不必一直编写双反斜杠,并且可以直接复制/粘贴路径,所以我建议你养成做同样的习惯.


总而言之,在这种情况下,我实际上建议您使用@ lordkain的答案中Path.Combine实用程序方法,因为您不必担心反斜杠是否已包含在路径中并意外地加倍斜杠或省略它们在组合部分路径时完全相同.

  • 这对我不起作用.@"\"只是制作"\\" (5认同)
  • @MattyAB:你是如何检查结果字符串的?如果您在Visual Studio调试器中检出它,它将显示添加了转义字符. (3认同)

小智 17

要逃避反斜杠,只需使用其中的两个,如下所示: \\

如果你需要逃避其他事情,这可能会有所帮助..


lor*_*ain 6

有为此Path.Combine()制作的特殊功能

var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");
Run Code Online (Sandbox Code Playgroud)


And*_*ard 5

"\"只需使用 +转义"\\Tasks"或使用逐字字符串,例如@"\Tasks"