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 :

[WD12]Compter le nombre de caractère d'une chaîne


Sujet :

WinDev

  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut [WD12]Compter le nombre de caractère d'une chaîne
    Bonjour les développeurs,

    Voilà une petite question toute bête à laquelle je ne trouve pas de réponse dans l'aide...
    Ou alors je n'arrive pas à utiliser l'aide comme il le faut ce qui est aussi probable.

    Donc mon problème est que j'ai une chaîne de caractère sChaine1 que je souhaiterais comparer avec sChaine2
    Si ces deux chaînes ont au moins un caractères commun, j'arrête le test et renvoie faux.

    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	//Vérification de non concordance entre sChaîne1 et sChaîne2
    	bOK est un booléen = Vrai
    	i est un entier = 1
    	j est un entier
    	TANTQUE i <= Occurrence(sChaine1) ET bOK <> Faux
    		j = 1
    		TANTQUE j <= Occurrence(sChaine2) ET bOK <> Faux
    			SI sChaine1[[i]] = sChaine2[[j]] ALORS
    				bOK = Faux
    			FIN
    			j++
    		FIN
    		i++
    	FIN

    seulement, Occurence(sChaine) n'existe pas ou du moins, ne fais pas le traitement que je voudrais...
    en gros, je voudrais connaître le nombre d'occurence/caractère de la chaîne en question.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Je te conseille de regarder dans l'aide du coté de TailleCommune()

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    // Comparaison en partant du début
    TailleCommune("ABCDE", "ABXYZ") // renvoie 2
    // Comparaison en partant de la fin
    TailleCommune("VWXYZ", "ABXYZ", DepuisFin) // renvoie 3

    // Comparaison caractère par caractère
    TailleCommune("New York", "New Yorker") // renvoie 8
    // Comparaison par mot entier
    TailleCommune("New York", "New York City", MotComplet) // renvoie 3

    // Comparaison avec prise en compte de la casse
    TailleCommune("ABCDE", "ABCdE") // renvoie 3
    // Comparaison sans prise en compte de la casse
    TailleCommune("ABCDE", "ABCdE", SansCasse) // renvoie 5
    ok Merci mais...

    disons que j'ai une chaîne ABCDE et une autre EDCBA
    enfin j'ai prit l'inverse de la première chaîne mais ça pourrait être ACBED...

    il ne me renverra pas 5. Or c'est le résultat que je voudrais avoir

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    POUR le_i = 1 A TAILLE(sChaine1)
      SI POSITION(sChaine2, MILIEU(sChaine1, le_i, 1)) > 0 ALORS
         RENVOYER faux
      FIN
    FIN

  5. #5
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    l'algorithme est meilleur que le mien et semble marcher à vue d'œil ^^
    je le teste de suite

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut
    Si ces deux chaînes ont au moins un caractères commun, j'arrête le test et renvoie faux.
    Donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI TailleCommune(sChaine1, sChaine2) > 0 ALORS RENVOYER Faux
    A partir du moment ou tu veux juste renvoyer faux si il y a un caractère en commun, pas besoin de savoir combien il y en a en commun, juste de savoir si il y en a au moins 1.

    Après, j'ai peut-être mal compris quelque chose

    P.S : Rien dit, je viens de tilter que cette fonction ne marche peut-être pas comme je l'aurais pensé :p

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Citation Envoyé par MimiCracra44 Voir le message
    en gros, je voudrais connaître le nombre d'occurence/caractère de la chaîne en question.
    Donc le nombre de caractères communs aux deux chaînes quelque soit leur position.
    La code de Julien67 est bon, mais j'y ajouterais un compteur

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Guardian Voir le message
    La code de Julien67 est bon, mais j'y ajouterais un compteur
    MimiCracra44 a dit : "Si ces deux chaînes ont au moins un caractères commun, j'arrête le test et renvoie faux."


  9. #9
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je vais être un petit peu plus claire.

    A la base, je souhaitais connaître le nombre de caractère dans une chaine pour faire une boucle et ensuite un test avec une autre chaîne.

    Le but étant de demander à l'utilisateur de changer sa saisie si dans un caractère dans le champs a est retrouvé dans b et vice versa.

    Pour être plus précise encor, j'ai un champs de caractères interdits que l'utilisateur renseigne et un champs de caractères qu'il veut voir apparaître.

    Il serait illogique qu'il veuille interdire $ et qu'il le mette également en caractère qu'il souhaite voir apparaître.

    d'où cette procédure renvoyant un bOk à faux.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    POUR le_i = 1 A TAILLE(sChaine1)
      SI POSITION(sChaine2, MILIEU(sChaine1, le_i, 1)) > 0 ALORS
         lch_caract += MILIEU(sChaine1, le_i, 1) + " "
      FIN
    FIN
     
    INFO("les caracteres" + lch_caract + " sont les 2 champs")
     
    RENVOYER FAUX

  11. #11
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Ça fonctionne très bien Julien ^^
    je l'ai adapté à mon contexte et il n'y a aucun problème.
    Merci à tous.

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

Discussions similaires

  1. [A-00] Compter le nombre de caractère dans une zone de texte
    Par etoileetoile dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/05/2024, 17h31
  2. [Débutant] Compter le nombre de caractères d'une ligne
    Par niepoc dans le forum MATLAB
    Réponses: 4
    Dernier message: 25/04/2008, 14h10
  3. Compter le nombre de caractére d'une chaîne
    Par koKoTis dans le forum VBScript
    Réponses: 8
    Dernier message: 03/04/2008, 12h35
  4. Réponses: 4
    Dernier message: 05/05/2006, 23h52
  5. Compter le nombre de caractère d'une chaîne
    Par kespy13 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 18h04

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