[C#]Comment doubler les \ dans un string - chemin d'accès?
Bonjour,
:arrow: Introduction
Je me retrouve face à un problème assez étrange ...
Vous connaissez très certainement ceci :
Code:
string cheminRep = @"D:\MonRepertoire\a.mp3";
Ceci permet d'utiliser plus tard la chaine de caractère cheminRep en tant que chemin d'accès. C'est en fait égal à :
Code:
string cheminRep = "D:\\MonRepertoire\\a.mp3";
:arrow: Ma question
Mais comment dois-je faire si j'ai une chaine de caractère qui contient un chemin normal pour l'utiliser comme chemin d'accès aux données ?
Code:
string cheminRep = "D:\MonRepertoire\a.mp3";
Je me demande cela car mon chemin sera récupéré dans un fichier ou une base de données, donc le format n'est pas forcément avec \\.
Alternative : si vous savez comment doubler les \ avant de stoquer ça m'intéresse.
:arrow: Mes tentatives
J'ai tenté la fonction Replace pour mettre deux slash mais sans succès, et les divers fonctions Replace trouvées sur le net ne m'ont pas donné satisfaction. J'ai donc tenté de doubler les slash dans la fonction Replace, mais rien à faire :
cheminRep.Replace("\\", "\\\\");
J'ai bien sûr essayé d'utiliser la variable avec un @ devant (on ne rigole pas ... merci) ... sans succès :
Code:
mp3 = new Microsoft.DirectX.AudioVideoPlayback.Audio(@ficMP3);
Je suis sûr que beaucoup de monde a déjà eu affaire à ceci ... mais je peine à trouver la solution dans les diverses ressources.
Merci pour votre aide !
Re: [C#]Doubler les \ dans un String contenant un chemin d'a
Il y a, il me semble (à moins qu'un truc m'échappe) un gros problème de logique dans la question et le reste du thread.
Il a mélange entre le contenu d'une variable et la syntaxe particulière d'un langage particulier.
Dans le code source, C# utilise \ comme séquence escape. Donc si une chaîne contient ce caractère il faut le doubler. C'est exactement la même chose en VB où cette fois ci ce sont les doubles quotes qu'il faut doubler car elles servent de délimliteurs de chaînes, ou les simples quotes sous Delphi, etc..
L'astuce du @ (dit le verbatim sous c#) est une simplification notamment pour les chemins de fichiers où ce caractères se retrouve fréquemment.
Mais tout cela n'a _rien_ à voir avec le _contenu_ de la variable ! C'est juste une contrainte syntaxique du langage.
Quand dans un source on tape "string s = c:\\toto\titi\\tata.txt" , le contenu de "s" c'est "c:\toto\titi\tata.txt"...
Si maintenant on charge "s" en partant d'un champ d'une base de données ou en lisant un fichier ou même par génération dans le code, il n'y a bien entendu en aucun cas besoin de doubler les \, cela ne sert à rien et au contraire le programme ne marchera pas, car le doublement donnera un nom de fichier non valide !
Donc pas de confusion entre une contrainte syntaxique et le contenu réel d'une variable.
Re: [C#]Doubler les \ dans un String contenant un chemin d'a
Citation:
Envoyé par Merlin
Mais tout cela n'a _rien_ à voir avec le _contenu_ de la variable ! C'est juste une contrainte syntaxique du langage.
Quand dans un source on tape "string s = c:\\toto\titi\\tata.txt" , le contenu de "s" c'est "c:\toto\titi\tata.txt"...
Si maintenant on charge "s" en partant d'un champ d'une base de données ou en lisant un fichier ou même par génération dans le code, il n'y a bien entendu en aucun cas besoin de doubler les \, cela ne sert à rien et au contraire le programme ne marchera pas, car le doublement donnera un nom de fichier non valide !
Donc pas de confusion entre une contrainte syntaxique et le contenu réel d'une variable.
Merci beaucoup pour ces explications ! En effet je n'avais absolument pas compris cela ... :ccool:
Et en tout cas merci a vous 3 pour vous etre penché sur mon probleme.
En reponse a Morpheus :
Pour ce qui est de:
Code:
1 2
| ficMP3 = "C:\a.mp3"
mp3 = new Microsoft.DirectX.AudioVideoPlayback.Audio(@ficMP3); |
Ceci ne fonctionne pas. Je ne peux pas te dire l'erreur exact car je suis au boulot, mais je me souviens avoir essaye cela sans succes. (mais j'ai fait tellement de tests que je me suis peut etre un peu melanger les pinceaux sur la fin.)
Bon eh bien ... je vais pouvoir des ce soir continuer mon appli. Encore merci et a bientot.
Et desole d'avoir induit pas mal de monde en erreur ...
Re: [C#]Doubler les \ dans un String contenant un chemin d'a
Citation:
Envoyé par Demco
Pour ce qui est de:
Code:
1 2
| ficMP3 = "C:\a.mp3"
mp3 = new Microsoft.DirectX.AudioVideoPlayback.Audio(@ficMP3); |
Ceci ne fonctionne pas.
Vire le @. C'est pour les chaînes, pas pour les variables.