Prendre un élément spécifique dans une chaîne de caractère [Résolu]

Signaler
Messages postés
36
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
18 janvier 2013
-
Messages postés
36
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
18 janvier 2013
-
Bonsoir à tous,

J'ai besoin de votre aide. Je suis bloqué dans un test.

Je vous explique mon soucis :

J'aimerai prendre la première valeur de ma chaîne de caractère, ensuite prendre la deuxième, ensuite la 3ème, ainsi de suite... Le problème, c'est que je n'ai pas trouvé une fonction qui me permette cela.

Dans la librairie MSDN j'ai vu qu'il y a des fonctions tel Mid, Left, Right ; le soucis c'est que l'on prend une série de caractères et non un seul...

Y a-t-il une fonction qui fait cela ? Ou dois-je en céer une ?
Avez-vous des exemples de codes, ou des explications, ou des liens pour m'amener à résoudre mon problème.

Merci pour vos futres réponses !!!

Amicalement Philou

8 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Comme le dit PCPT, Mid permet d'isoler un seul des caractères de ta chaine, suffit de lui dire à quel endroit la prendre et combien de caractères tu veux isoler.
Une simple boucle For-Next avec, pour délimiteur de fin, la longueur de la chaine (Len) et tu pourras énumérer chaque caractère.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,
1) à khouja_mustapha : split sur quel séparateur ?

2) à philouxy

Si ta chaîne est longue, l'utilisatiobn de Mid sera cause de lenteurs ...

Utilise la fonction strconv de l'une de ces deux manières possibles :
a)
dim toto() as byte
toto=strconv(ta_chaine,vbfromunicode)

toto sera alors un tableau contenant le code ascii de chacunh des caractères de ta chaîne, à transformer en chr ainsi : chr(toto(n) (ou n = index dans le tableau toto)
ou
b)
toto=strconv(ta_chaine,vbunicode)
titi = split(toto, chr(0)


et titi sera un array contenant directement chaque caractère de ta chaîne
titi(n) pour le caractère correspondant à l'index n de titi
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut,

beh avec mid en bouclant sur ta chaine tu as bien chaque caractère non?

explique avec une chaine et le résultat que tu voudrais stp

++

[hr]
Messages postés
33
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
27 septembre 2010

essai la fonction split
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Pardon : ajoute une parenthèse tant après chr(0) (2ème méthode) qu'après chr(toto(n) (1ère méthode)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
33
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
27 septembre 2010

tu peux utiliser split avec espace comme séparateur :

Dim x as String()
x=Split(MaChaine," ")
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Et où as-tu vu :
1) que sa chaine contient des espaces ?
2) qu'il voudrait l'éclater en mots séparés par des espaces ?

Relis donc sa demande : il veut extraire, caractère par caractère, chacun des caractères de sa chaîne !

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
36
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
18 janvier 2013

Bonsoir à tous,

Désolé pour cette réponse tardive. Merci à vous tous pour ces réponses détaillées

Effectivement je me suis embrouillé les pinceaux avec cette fonction "Mid", car je peux lire caractère par caractère...J'ai effectivement utiliser une boucle For-Next et à l'intérieur de cette boucle, la fonction Mid comme tu me l'as proposé Jack.

@Ucfoutu, merci pour cette fonction je l'essaierai aussi, là je veux lire simplement 3 caractères à un endroit précis, donc la fonction Mid à l'air de marché... J'ai pas encore un grand niveau pour optimiser mon code...

Pour l'instant je continue mon code, mais je sens que je vais pas tarder à vous reposer des questions, mais sur un autre sujet.

A tout bientot
Merci

Amicalement Philou