IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#]Comment doubler les \ dans un string - chemin d'accès?


Sujet :

C#

  1. #1
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut [C#]Comment doubler les \ dans un string - chemin d'accès?
    Bonjour,


    Introduction
    Je me retrouve face à un problème assez étrange ...
    Vous connaissez très certainement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    string cheminRep = "D:\\MonRepertoire\\a.mp3";
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre Expert
    Avatar de ArHacKnIdE
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 947
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 947
    Par défaut
    Oui en effet, c'est un réel problème logique.

    Peut être remplacer/ajouter automatiquement pour qu'il y est deux //
    Tu as déjà essayé, mais peut être coder un petit programme exprès

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Alors là, je comprend pas

    En faisant tout simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mp3 = new Microsoft.DirectX.AudioVideoPlayback.Audio(@ficMP3);
    cela devrait marcher.....

    Que ton chemin vienne d'une base de donnée ou d'un fichier, peut importe normalement...

  4. #4
    Membre Expert
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Par défaut 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.

  5. #5
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut 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 ...
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut Re: [C#]Doubler les \ dans un String contenant un chemin d'a
    Citation Envoyé par Demco
    Pour ce qui est de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Doubler les "\" dans un chemin d'acces
    Par wam111 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 25/06/2014, 08h41
  2. Comment énumérer les types Int32, String, Boolean ?
    Par BasicZX81 dans le forum VB.NET
    Réponses: 9
    Dernier message: 12/08/2012, 13h18
  3. Comment empécher les @ dans mon script de test d'eMail actuel ?
    Par Jean-Seba dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/07/2011, 17h57
  4. Comment remplacer les "\" dans un "string"
    Par leduc26 dans le forum C++
    Réponses: 11
    Dernier message: 15/04/2008, 10h38
  5. vc++ express 2005 comment transformé les char * en String
    Par ben_ghost dans le forum Visual C++
    Réponses: 1
    Dernier message: 20/07/2006, 06h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo