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

Résolu
philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013 - 30 déc. 2009 à 23:13
philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013 - 7 janv. 2010 à 20:07
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

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
31 déc. 2009 à 08:21
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)
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
31 déc. 2009 à 14:41
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.
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
30 déc. 2009 à 23:28
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]
0
khouja_mustapha Messages postés 33 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 27 septembre 2010
31 déc. 2009 à 09:00
essai la fonction split
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
31 déc. 2009 à 14:44
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.
0
khouja_mustapha Messages postés 33 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 27 septembre 2010
31 déc. 2009 à 17:22
tu peux utiliser split avec espace comme séparateur :

Dim x as String()
x=Split(MaChaine," ")
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
31 déc. 2009 à 17:37
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.
0
philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013
7 janv. 2010 à 20:07
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
0