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

VB.NET Discussion :

Extraire une chaîne d'une chaîne


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Extraire une chaîne d'une chaîne
    Bonjour,

    Je souhaiterai extraire une partie de chaîne d'une chaîne. J'essaye de faire cela avec ma propre fonction, mais le problème, c'est que la chaîne en question contient des "".

    Voici un extrait de la chaîne dans laquelle je veux choper une chaîne :

    ;e"/><site name="Site Tutos"/></target><

    Je voudrai juste récupérer Site Tutos, sans les guillemets.

    Avec ma fonction, je l'appelle et stocke le résultat dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Site = PrendreEntre(source, "/><site name=""", """/>")
    J'ai tout essayé (sauf la solution), de mettre une simple cote pour dire que y'a un guillemet, de mettre des double-guillemets. Mais rien ne marche.

    Si quelqu'un saurait comment faire, ça m'aiderait bien.

    Harry Potter

  2. #2
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 976
    Points
    1 976
    Par défaut
    1) Utilise \"
    Le \ est un caractère d'échapement qui indique de prendre tel que le caractere suivant
    Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse"
    - Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut LooserBoy, merci pour ta réponse,

    Cependant, ça n'a pas l'air de marcher ce truc, il me souligne toute la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PrendreEntre(source, "/><site name=\""," \ "/>")

  4. #4
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 976
    Points
    1 976
    Par défaut
    Ta fonction PrendreEntre() a bien 3 paramètres: source, debut, fin?
    Si c'est cela, ton appel devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PrendreEntre(source, "/><site name=\"","\"/>")
    Testé chez moi, ok.
    ATTENTION! Pas d'espace entre \ et "
    Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse"
    - Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Le caractère d'échappement n'est pas un objet dotNet, c'est une syntaxe C#; ergo, ça marche pas en VerBeux

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait les espaces entre \, j'en ai pas mis, c'est lui qui me les met en auto.

  7. #7
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 976
    Points
    1 976
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Le caractére d'échappement n'est pas un objet dotNet, c'est une syntaxe C#; ergo, ça marche pas en VerBeux
    Rien que pour cela, le VerBeux, c'est vraiment trop null
    Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse"
    - Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Et oui, ma fonction a bien trois paramètres.

  9. #9
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Plutôt que de re-coder une fonction pour extraire ce que tu veux d'une chaîne de caractère, regardes du côté des expressions régulières (regex) tu devrais trouver ton bonheur ! (et ça, normalement, ça devrait aussi exister du côté "obscure" du .Net )
    Working as designed

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Utilise plutot une expression régulière avec capture:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim r As New Regex Regex("<site name=\"([^\"]+)\"")
    Dim m as Match
    m = r.Match(source)
    Dim site_name as String
    If m.Success Then
       site_name = m.Groups(1)
    End If

  11. #11
    Invité
    Invité(e)
    Par défaut
    Heu salut et merci les gars pour ces réponses,

    Mais regarde mieux ta première ligne Tomlev, je ne pense pas que cela puisse marcher, puisqu'il te met qu'une seule paranthèse et un crochet ouvrant, et une parenthèse et un crochet fermant. Les deux sont complètement indépendants, c'est à dire qu'il ne met aucun rapport entre les deux.
    Donc ce doit pas être ça non plus...

    Harry Potter
    Dernière modification par Invité ; 09/01/2008 à 15h49.

  12. #12
    Invité
    Invité(e)
    Par défaut
    J'ai essayé ça, avec l'aide que j'ai trouvé ici http://www.bash-linux.com/unix-man-ascii-francais.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PrendreEntre(source, "process name=\042", "\042 version")
    Mais ça ne marche pas non plus.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Yes !! Ca y'est j'ai réussi !

    Pour le guillemet, j'ai utilisé le chr(34). Et j'ai aussi rallongé ma borne de fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PrendreEntre(source, "<site name=" & Chr(34), Chr(34) & "/></target>")

  14. #14
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Je me permet tout de même d'insister : tu devrais te renseigner un peu sur les expressions régulères, car elles sont faites pour faire ce que tu fais : analyser une chaine de caractère, identifier un motif à l'interieur (et entre autres choses l'extraire).
    Working as designed

  15. #15
    Invité
    Invité(e)
    Par défaut
    Oui t'inquiètes Nikoui, je m'y suis renseigné. J'ai même jeté un oeil là-dessus http://lgmorand.developpez.com/dotnet/regex/.
    J'avais déjà testé avec ça, mais je n'ai cependant pas réussi.

  16. #16
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par LooserBoy Voir le message
    Rien que pour cela, le VerBeux, c'est vraiment trop null
    En Vb, il suffit de doubler les guillemets ... simplement

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PrendreEntre(source, "<site name=""", """/></target>")

  17. #17
    Invité
    Invité(e)
    Par défaut
    En fait non, car j'avais aussi essayé cela.

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Harry_Potter Voir le message
    Heu salut et merci les gars pour ces réponses,

    Mais regarde mieux ta première ligne Tomlev, je ne pense pas que celui puisse marcher, puisqu'il te met qu'une seule paranthèse et un crochet ouvrant, et une parenthèse et un crochet fermant. Les deux sont complètement indépendants, c'est à dire qu'il ne met aucun rapport entre les deux.
    Donc ce doit pas être ça non plus...

    Harry Potter
    En fait j'ai testé mon truc en C# et ça fonctionne mais je me suis peut-être planté sur la traduction en VB...
    Dans le pattern de l'expression régulière, les parenthèses définissent un groupe de capture pour extraire la partie qui t'intéresse, et les crochets indiquent quels caractères peuvent être inclus. Par exemple:
    [abc] : une lettre parmis a, b et c
    [a-z]+ : une série de lettres entre a et z
    [^abc] : n'importe quel caractère sauf a, b et c
    [^\"]+ : une serie de n'importe quels caractères sauf un guillemet
    Donc l'expression régulière que j'ai indiquée capture le texte entre guillemets qui suit "<site name="

    Sinon, vu que c'est du XML, tu ferais peut-être mieux d'utiliser un parser XML...

  19. #19
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par Harry_Potter Voir le message
    En fait non, car j'avais aussi essayé cela.
    bah en fait si ... tu as mal essayé !!

  20. #20
    Invité
    Invité(e)
    Par défaut
    Ok merci Tomlev.

    Sinon, Kelpan, autant pour moi... Il est vrai que je n'avais essayé qu'avant que je ne rallonges le troisième paramètre. Et comme avec les chr(34), ça ne fonctionnait pas non plus sans le rallonger, il était donc normal que cela ne marche pas.

    Et pour le parser XML, j'avais ouvert un sujet ici http://www.developpez.net/forums/sho...d.php?t=462336, entre autres. Mais personne ne m'a répondu.
    Cependant, quand j'analyses mon fichier source, je crois qu'il ne s'agit pas tout à fait de XML...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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