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


72

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

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

我得到错误:

无法识别的转义序列。

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


10
使用双反斜杠\\或在字符串的开头输入@
Andrew


2
@ Precious1tj:我想也许他们会投票否决您,因为如果您搜索“ C#无法识别的转义序列”,您将很容易找到答案,而无需发布问题。
克里斯·辛克莱

@ Precious1tj也许是因为搜索问题标题会导致您找到答案?我没有投票,所以我不确定。
Nolonar 2013年

3
@ Precious1tj:我不是说您的标题,而是您的错误信息。但是,仅供参考,为以后的搜索,请务必在搜索中包括“ C#”。例如,第一个结果谷歌搜索与“C#”你的标题时得出这样
克里斯·辛克莱

Answers:


109

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

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

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

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

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


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


4
@MattyAB:您如何检查结果字符串?如果要在Visual Studio调试器中检出它,它将显示它并添加了转义符。
克里斯·辛克莱

此外,使用Path.Combine与操作系统无关,因此该代码可以在* nix和Windows计算机上运行
Stephen Wigginton


5

为此Path.Combine()有一个特殊的功能。

var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");



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

放双反斜杠而不是单反斜杠...


1

即使这篇文章很老,我还是尝试了一些适合我的案例。

我想用下面的值创建一个字符串变量:

21541_12_1_13\":null

所以我的方法是这样的:

  • 使用逐字构建字符串

    字符串substring = @“ 21541_12_1_13 \”“:null”;

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

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

希望能有所帮助。干杯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.