kelm_by
Messages postés296Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention21 novembre 2008
-
16 déc. 2007 à 23:27
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
17 déc. 2007 à 07:00
salut tous le monde
j'ai une chaine st ou je veux extraire tous les mots entre a et b sauf que ce code ne donne que les 2premier
st="xwfgafdbdrtaetrbtrydytrzatuytrb"
Do While w < 5
if InStr(st, "a")>0 then
p1 = InStr(st, "a")
ch1 = mid(st, p1)
p2 = InStr(ch1, "b")
ch2 = Left(ch1, p2)
end if
p3=InStr(st, b)
If p3 > 0 Then st = Right(st, p3)
w = w + 1
Loop
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 déc. 2007 à 01:45
Salut
"... que les deux premiers" : les deux premiers quoi ?
p3=InStr(st, b) est, je pense, incorrect --> p3=InStr(st, "b")
A chaque tour de ton Do-Loop, le résultat final est stocké dans ch2 : un nouveau ch2 est donc écrasé par un nouveau ch2 : Normal ?
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 17 déc. 2007 à 07:00
Bonjour,
La trop grande simplicité de cet exercice me conduit à me limiter à quelques premières indications :
Si P2 est la position de "b" et P1 cette de "a", in mot entre a et b n'est susceptible d'exister que si, à la fois,
P2 est plus grand que P1 et P1 est plus grand que 0.
On a alors le mot compris entre "a" et "b" de la façpn suivante :
Mid(st, P1 + 1, P2 - P1 - 1)
et la partie de la chaîne non encore traitée commence à P2 + 1