Je veux écrire quelque chose comme ceci C:\Users\UserName\Documents\Tasks
dans une textbox
:
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks";
Je reçois l'erreur:
Séquence d'échappement non reconnue.
Comment puis-je écrire une barre oblique inverse dans une chaîne?
La barre oblique inverse ("\"
) est un caractère d'échappement spécial utilisé pour indiquer d'autres caractères spéciaux tels que les nouvelles lignes (\n
), les tabulations (\t
) ou les guillemets (\"
). Si vous souhaitez inclure une barre oblique inversée elle-même, vous avez besoin de deux barres obliques inverses ou utilisez la chaîne verbatim @
: "\\Tasks"
ou @"\Tasks"
.
Lisez le MSDN documentation/C # Specification qui décrit les caractères qui sont échappés à l’aide du caractère barre oblique inversée et de l’utilisation du littéral de chaîne mot pour mot.
En règle générale, la plupart des développeurs C # .NET ont tendance à préférer utiliser les chaînes verbatim @
lors de la création des chemins de fichiers/dossiers, car ils évitent d'écrire des doubles barres obliques à tout moment et de les copier/coller directement. Je suggérerais que vous preniez l'habitude de faire la même chose.
Cela dit, dans ce cas, je vous recommanderais d'utiliser la méthode de l'utilitaire Path.Combine
comme dans la réponse de @ lordkain car vous n'avez pas à vous soucier de savoir si des barres obliques inverses sont déjà incluses dans les chemins et si elles sont doublées accidentellement. les barres obliques ou les omettre complètement lors de la combinaison de parties de chemins.
Pour échapper à la barre oblique inverse, utilisez-en simplement 2, comme ceci: \\
Si vous avez besoin d'échapper à autre chose, cela peut être utile. .
Il y a une fonction spéciale faite pour cela Path.Combine ()
var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");
Il suffit d'échapper au "\"
en utilisant + "\\Tasks"
ou d'utiliser une chaîne de caractères telle que @"\Tasks"
La réponse précédente est correcte, mais dans ce cas précis, je vous recommande d’utiliser la méthode System.IO.Path.Combine.
Vous pouvez trouver plus de détails ici: http://msdn.Microsoft.com/en-us/library/fyy7a5kt.aspx
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\\Tasks";
Mettez une double barre oblique inverse au lieu d'une seule barre oblique inverse ...
même si ce poste est assez ancien, j'ai essayé quelque chose qui a fonctionné pour mon cas.
Je voulais créer une variable de chaîne avec la valeur ci-dessous:
21541_12_1_13\":null
donc mon approche était comme ça:
construire la chaîne en utilisant mot pour mot
string substring = @ "21541_12_1_13 \" ": null";
puis supprimez les barres obliques inverses non désirées à l'aide de la fonction Supprimer
string newsubstring = substring.Remove (13, 1);
Espérons que cela aide .