81

我想C:\Users\UserName\Documents\Tasks在 a中写这样的东西textbox

txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks";

我得到错误:

无法识别的转义序列。

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

4

7 回答 7

130

反斜杠 ( "\") 字符是一种特殊的转义字符,用于指示其他特殊字符,例如换行符 ( \n)、制表符 ( \t) 或引号 ( \")。

如果要包含反斜杠字符本身,则需要两个反斜杠或使用@逐字字符串:

var s = "\\Tasks";
// or 
var s = @"\Tasks";

阅读MSDN 文档/C# 规范,其中讨论了使用反斜杠字符转义的字符和逐字字符串文字的使用。

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


综上所述,在这种情况下,我实际上建议您使用@lordkain 的答案Path.Combine中的实用方法,因为这样您就不必担心反斜杠是否已经包含在路径中并且不小心将斜杠加倍或省略它们完全组合路径的一部分时。

于 2013-08-30T12:18:08.783 回答
19

要转义反斜杠,只需使用其中的 2 个,如下所示: \\

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

于 2013-08-30T12:19:01.983 回答
6

这个Path.Combine()有一个特殊的函数

var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");
于 2013-08-30T12:21:42.003 回答
4

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

于 2013-08-30T12:18:16.683 回答
3

前面的答案是正确的,但在这种特定情况下,我建议使用System.IO.Path.Combine方法。

您可以在此处找到更多详细信息:http: //msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

于 2013-08-30T12:21:29.987 回答
2
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\\Tasks";

放一个双反斜杠而不是一个反斜杠......

于 2013-08-30T12:21:41.353 回答
1

即使这篇文章很老,我也尝试了一些对我的情况有用的东西。

我想创建一个具有以下值的字符串变量:

21541_12_1_13\":null

所以我的方法是这样的:

  • 逐字构建字符串

    字符串子字符串 = @"21541_12_1_13\"":null";

  • 然后使用删除功能删除不需要的反斜杠

    字符串 newsubstring = substring.Remove(13, 1);

希望有帮助。干杯

于 2018-06-26T14:15:31.643 回答