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

VBScript Discussion :

Chaine de caractères et tableau


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 31
    Points
    31
    Par défaut Chaine de caractères et tableau
    Bonjour à tous,

    Si vous pouviez m'aider ça serait bien cool ;o)

    Je voudrais vérifier l'existence d'une phrase dans une chaine de caractères et renvoyer cette phrase si elle existe. Sachant que cette phrase fait partie d'un ensemble de phrase dans un tableau.

    Exemple

    chaine_de_caracteres = "Studio deux pièces - 35 mètre carré - Dernier étage"

    dans mon tableau j'ai les éléments: "Cuisine - salle de bain - Studio deux pièces" par exemple.

    Je voudrais donc scanner la chaine de caractère en prenant comme référence le tableau. Ici il trouverait une correspondance avec "Studio deux pièces" et renvoit donc "Studio deux pièces" en sortie


    Merci de votre aide !!!

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut Je voudrais vérifier l'existence d'une phrase dans une chaine de caractères
    Bonjour,

    Tu pourrais faire peut=être quelque chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim es1, es2, es3 As String
    Dim iv1 As Integer
     
    es1 = "Cuisine - salle de bain - Studio deux pièces"
    es2 = "Studio deux pièces - 35 mètre carré - Dernier étage"
     
    iv1 = InStr(es2, "-")
    es3 = Trim(Left(es2, iv1 - 1))
     
    If InStr(es1, es3) <> 0 Then
        'sortie "Studio deux pièces - 35 mètre carré - Dernier étage
    End If

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    merci pour ta réponse ! ;o)

    Le problème c'est que j'utilise un logiciel developpé en interne dans ma boite pour faire des recherches sur des documents, extraire des données et les enregistrer dans une base. Le vbscript et le javascript sont les languages utilisés par ce logiciel afin de "filtrer" les chaines de caractères et de récupérer précisément certaines données. C'est pour ça que la structure en tableau me convenait bien pour ce type d'opération

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Je ne suis pas certain d'avoir bien compris ton problème.

    Tu as une chaine de caractères :
    chaine_de_caracteres = "Studio deux pièces - 35 mètre carré - Dernier étage"
    Et un tableau :
    tableau = "Cuisine - salle de bain - Studio deux pièces"
    Tu veux trouver les éléments communs à ta chaine et à ton tableau ?

  5. #5
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Points : 212
    Points
    212
    Par défaut
    Pas certain de ce que tu veux, mais là tu remplis un tableau, et tu l'affiches sans les espaces avant et après...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    'Dim es1, es2 optionnel en VBS
     
     
    es1 = "Cuisine - salle de bain - Studio deux pièces"
     
     
    arrList = Split(es1, "-")
    wscript.echo LTrim(RTrim(arrList(0))) 'affiche : Cuisine 
    wscript.echo LTrim(RTrim(arrList(1))) 'affiche : salle de bain
    wscript.echo LTrim(RTrim(arrList(2))) 'affiche : Studio deux pièces
    enjoy^^

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Dim es1, es2, es3 As String
    Dim iv1 As Integer
    Fonctionne pas en VBS, pas de typage de variable

    Globalement, la réponse serait regarde ici :
    http://vb.developpez.com/faqvbs/?pag...sExtraitChaine
    Je pense qu'avec les exemples de la FAQ tu arriveras à faire ce que tu souhaites.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 297
    Points : 3 551
    Points
    3 551
    Par défaut
    l'objet regexp a été créé pour régler ce genre de problème
    un peu de lecture: http://www.developpez.net/forums/d44...ion-reguliere/
    ou encore: http://www.developpez.net/forums/d60...ghlight=regexp
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 31
    Points
    31
    Par défaut
    Bonjour et merci pour vos réponses !!

    En fait il faut absolument que les données de comparaison soient dans un tableau

    J'ai commencé a travailler sur la fonction mais je galère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Function Main( strText )
     
    	dim TableauElements()
    	redim TableauElements(118)
     
    TableauElements(0)="Tomates"
    TableauElements(1)="Pommes de terre"
    TableauElements(2)="Couteaux"
    TableauElements(3)="ivre de recette"
    TableauElements(4)="Citron"
    TableauElements(5)="Bol"
     
     
    tailleTableau = UBound(TableauElements)
     
    For i = 0 to tailleTableau do
    	dim pos
    	pos=InStr (strText, TableauElements(i))
    	if pos <> 0 then
    	main = TableauElements(i)
            else
     
    Next
     
    end function

    Le code ne marche pas bien sùr je ne suis pas très doué ;o) J'envisageais la chose ainsi:


    Je vais lire mon tableau où se trouvent tous les éléments (il peut y en avoir 100 et plus) et pour chaque cellule lue de mon tableau rechercher l'élément de la cellule dans la chaine de caractère (Sachant que un seul élément du tableau à la fois peut se retrouver dans la chaine de caractere)

    Ainsi en se basant sur mon tableau ci dessus et sur une chaine de caractere comme "Jus de pamplemousse. Farine - Riz-au-lait / Tomates. Lessive" (vraiment au hasard) il y aurait une correspondance avec la cellule "0" de mon tableau. Se serait donc le contenu de la cellule "0" qui serait renvoyé. Dur dur

    Dans l'exemple ci-dessus j'ai utilisé InStr parce que je ne trouvais ien d'autre. Je me suis que si il renvoie la reference du premier caractere c'est qu'il trouve au moins quelque chose... J'enn aii maarrree


    Merci pour votre aide !!!!!!!!!!!!!

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est la position de son premier caractère dans ch1, sinon la fonction renvoie 0.
    Donc si tu n'as pas 0 alors c'est que ch2 a été trouvé au moins une fois dans ch1. Je crois que d'après l'expression de ton besoin c'est suffisant non ?

    Donc tu me supprimes ton else et le remplace par un End If car un If Then se termine toujours par un End If, et pour être plus propre, tu remonte le dim pos, pour le sortir de la boucle. Une variable se déclare avant une boucle pas dedans, parce que là elle est redéclarer à chaque tour de boucle

    Mais attention avec ce code, aux premiers éléments du tableau trouvé dans strText tu sors de la fonction en renvoyant cet élément.
    Est ce bien ce que tu souhaites ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  10. #10
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Mille excuses pour tous, mais je n'ai pas fait attention et j'ai cru en une question sur VB6 .
    Je ferai plus attentif la prochaine fois.

    A+

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 31
    Points
    31
    Par défaut
    et...ca marche !!! Super merci beaucoup !!!!!

    Hey j'y suis presque arrivé tout seul lol: je vais bientôt monté mon SSII

    Merci à tout en tout cas !!!

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

Discussions similaires

  1. [Débutant] Transformer une chaine de caractères en tableau
    Par Manou26 dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/11/2013, 16h57
  2. Chaine de caractère et tableau
    Par Garamante dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/12/2008, 16h26
  3. [RegEx] Ajouter une chaine de caractères à un tableau
    Par the magic developer dans le forum Langage
    Réponses: 10
    Dernier message: 03/11/2008, 10h14
  4. Convertir une chaine de caractère en tableau
    Par Mysti¢ dans le forum Général Python
    Réponses: 7
    Dernier message: 09/04/2007, 12h20
  5. [Debutant][Tableau] Tableau indexé sur chaine de caractères
    Par SamRay1024 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 11h14

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