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

WinDev Discussion :

Position d'un mot dans une chaine de caractères [WD14]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut Position d'un mot dans une chaine de caractères
    Bonjour,
    Je n'arrive pas à trouver comment obtenir la position d'un mot (en fonction de son ordre) dans une chaine.
    Par exemple obtenir la position du troisième mot dans une chaine.

    En revanche, si j’utilise la fonction "position" pour obtenir la position de MonMot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PositionMot=Position(ChaineTexte,MonMot,1,MotComplet)
    Je vais obtenir la position de MonMot mais si ce mot existe plusieurs fois dans la chaine j'aurai la position du premier rencontré. C'est pour cela que je veux utiliser l'ordre du mot.
    J'espère avoir été clair.
    Merci si vous pouvez m’aider.

  2. #2
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Bonjour,

    Je pense qu'en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    position=Taille(ExtraitChaine(ChaineTexte,TaPosition-1,TonMot)+1
    ca devrait te renvoyer le bon résultat ..

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci jimmypage mais "TaPosition" c'est quoi ?

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Chainetexte est chaîne = "toto est de la famille toto, héritier de toto"
    PositionMot est un entier = 0
    POUR i = 1 A 3 // 3 correspond à la position du troisième mot 
    	PositionMot = Position(Chainetexte,"toto", (PositionMot + 1),MotComplet)
    FIN
    Trace(PositionMot)

  5. #5
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Oui pardon.. j'avais pas précisé

    TaPosition c'est en fait le rang du mot que tu cherche.. si tu veux la position du deuxième 'TonMot' dans la chaine, alors TaPosition=2.

    Je sais pas si je suis clair..

    et je corrige c'est pas Position -1 mais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    position=Taille(ExtraitChaine(ChaineTexte,TaPosition,TonMot)+1

  6. #6
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour, si tu veux obtenir l'ordre utilise plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaPosition est un entier = PositionOccurrence(ChaineTexte, "MonMot", 1,MotComplet)
    TANTQUE MaPosition <> 0
    Trace(MaPosition) // Renvoie l'ordre du MontMot
    FIN

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Ben vi, PositionOccurence(..)

  8. #8
    Membre confirmé Avatar de jimmypage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 314
    Points : 474
    Points
    474
    Par défaut
    Effectivement ! Pourquoi faire simple quand on peut faire compliqué ..

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    merci pour vos réponses mais mon problème n'est pas de trouver l'ordre d'un mot car je le connais.

    Mais dans une chaine, de trouver la position du 3ieme mot (par exemple) de cette chaine.
    Par avance merci

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Tu peux utiliser cette syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nPosition est un entier
    tabSeparateur est un tableau de chaînes = [" ", ",", ".", "'"]
    sChaine est une chaîne = "Ceci est un test."
    nIndiceMotSouhaité est un entier = 3
     
    POUR i = 1 _A_ (nIndiceMotSouhaité-1)
    	nPosition = Position(sChaine,tabSeparateur, nPosition)+1
    FIN
    Trace(nPosition)
    EDIT : et pour récupérer le 3ème mot (pas sa position), avec ExtraitChaine et une syntaxe équivalente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tabSeparateur est un tableau de chaînes = [" ", ",", ".", "'"]
    sChaine est une chaîne = "Ceci est un test."
    nIndiceMotSouhaité est un entier = 3
     
    Trace(ExtraitChaîne(sChaine,nIndiceMotSouhaité,tabSeparateur))

  11. #11
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Citation Envoyé par DanielB Voir le message
    merci pour vos réponses mais mon problème n'est pas de trouver l'ordre d'un mot car je le connais.

    Mais dans une chaine, de trouver la position du 3ieme mot (par exemple) de cette chaine.
    Par avance merci
    Et tu n'as pas trouvé ton bonheur dans les différentes propositions ?
    Les as-tu essayées ? Si oui, qu'est-ce qui ne fonctionne pas ?

    Si effectivement cela ne correspond à ta demande, donnes nous un exemple concret :
    Une chaine de caractère
    Le mot à chercher
    Le résultat qui devra être trouvé

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour vos réponses.
    Vos solutions jimmypage et lot² fonctionnent et me conviennent.
    Je vais utiliser le tableau de chaînes pour les séparateurs.
    Merci
    Pour votre aide.

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Je répare une omission, je me suis également inspiré du code de djejackk et je l'en remercie.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 4
    Dernier message: 04/03/2009, 10h18
  3. Extraction mots dans une chaine de caractère
    Par mercure07 dans le forum C
    Réponses: 6
    Dernier message: 30/07/2008, 13h54
  4. [RegEx] trouver un mot dans une chaine de caractère
    Par starr dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 15h36
  5. recherche de mots dans une chaine de caractères
    Par jeanfrancois dans le forum Langage
    Réponses: 5
    Dernier message: 10/02/2006, 10h47

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