web-dev-qa-db-fra.com

Comment écrire une barre oblique inverse (\) dans une chaîne?

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?

45
user2509901

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.

74
Chris Sinclair

Pour échapper à la barre oblique inverse, utilisez-en simplement 2, comme ceci: \\

Si vous avez besoin d'échapper à autre chose, cela peut être utile. .

13
Kyle

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");
4
lordkain

Il suffit d'échapper au "\" en utilisant + "\\Tasks" ou d'utiliser une chaîne de caractères telle que @"\Tasks"

2
user65439

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

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

Mettez une double barre oblique inverse au lieu d'une seule barre oblique inverse ...

2
Nil

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 .

0
ksereis