101 votes

Comment écrire une barre oblique inverse (\) dans une chaîne de caractères ?

Je voudrais écrire quelque chose comme ceci C:\Users\UserName\Documents\Tasks dans un textbox :

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

J'obtiens l'erreur suivante :

Séquence d'échappement non reconnue.

Comment écrire une barre oblique inverse dans une chaîne de caractères ?

156voto

Chris Sinclair Points 14829

La barre oblique inverse ( "\" ) est un caractère d'échappement spécial utilisé pour indiquer d'autres caractères spéciaux tels que les retours à la ligne ( \n ), les onglets ( \t ), ou des guillemets ( \" ).

Si vous souhaitez inclure une barre oblique inverse elle-même, vous devez utiliser deux barres obliques inverses ou utiliser la balise @ chaîne verbatim :

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

Lire le Documentation MSDN/Spécification C# qui traite des caractères échappés à l'aide de la barre oblique inverse et de l'utilisation de la chaîne littérale verbatim.

En général la plupart des développeurs C# .NET ont tendance à privilégier l'utilisation de l'option @ lors de la construction des chemins d'accès aux fichiers/dossiers, car cela leur évite d'avoir à écrire constamment des doubles barres obliques inverses et ils peuvent directement copier/coller le chemin d'accès, et je vous suggère donc de prendre l'habitude de faire de même.


Cela dit, dans ce cas, je vous recommande d'utiliser la fonction Path.Combine méthode utilitaire comme dans Réponse de @lordkain car vous n'avez pas à vous soucier de savoir si les barres obliques inverses sont déjà incluses dans les chemins et de doubler accidentellement les barres obliques ou de les omettre complètement lorsque vous combinez des parties de chemins.

20voto

Kyle Points 403

Pour échapper à la barre oblique inverse, il suffit d'en utiliser deux, comme ceci : \\

Si vous avez besoin de fuir d'autres choses, cela peut être utile. .

6voto

lordkain Points 2312

Une fonction spéciale est prévue à cet effet Chemin.Combine()

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

5voto

user65439 Points 4383

Il suffit d'échapper à la "\" en utilisant + "\\Tasks" ou utiliser une chaîne verbatim comme @"\Tasks"

3voto

Michael Moreno Points 138

La réponse précédente est correcte, mais dans ce cas précis, je recommanderais d'utiliser l'option System.IO.Path.Combine méthode.

Vous trouverez plus de détails ici : http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X