How do I write a backslash (\) in a string?
C#StringWinformsC# Problem Overview
I want to write something like this C:\Users\UserName\Documents\Tasks
in a textbox
:
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks";
I get the error:
> Unrecognized escape sequence.
How do I write a backslash in a string?
C# Solutions
Solution 1 - C#
The backslash ("\"
) character is a special escape character used to indicate other special characters such as new lines (\n
), tabs (\t
), or quotation marks (\"
).
If you want to include a backslash character itself, you need two backslashes or use the @
verbatim string:
var s = "\\Tasks";
// or
var s = @"\Tasks";
Read the MSDN documentation/C# Specification which discusses the characters that are escaped using the backslash character and the use of the verbatim string literal.
Generally speaking, most C# .NET developers tend to favour using the @
verbatim strings when building file/folder paths since it saves them from having to write double backslashes all the time and they can directly copy/paste the path, so I would suggest that you get in the habit of doing the same.
That all said, in this case, I would actually recommend you use the Path.Combine
utility method as in @lordkain's answer as then you don't need to worry about whether backslashes are already included in the paths and accidentally doubling-up the slashes or omitting them altogether when combining parts of paths.
Solution 2 - C#
To escape the backslash, simply use 2 of them, like this:
\\
Solution 3 - C#
There is a special function made for this Path.Combine()
var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");
Solution 4 - C#
Just escape the "\"
by using + "\\Tasks"
or use a verbatim string like @"\Tasks"
Solution 5 - C#
The previous answer is correct but in this specific case I would recommend using the System.IO.Path.Combine method.
You can find more details here: http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx
Solution 6 - C#
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\\Tasks";
Put a double backslash instead of a single backslash...
Solution 7 - C#
even though this post is quite old I tried something that worked for my case .
I wanted to create a string variable with the value below:
21541_12_1_13\":null
so my approach was like that:
-
build the string using verbatim
string substring = @"21541_12_1_13"":null";
-
and then remove the unwanted backslashes using Remove function
string newsubstring = substring.Remove(13, 1);
Hope that helps. Cheers