Récupéré une chaine de caractère situé entre 2 chaines

Signaler
Messages postés
79
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
28 août 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour/bonsoir
hum voila enfaite je sais pas comment mi prendre pour récupéré une chaine de caractère d'une page internet.
Le contexte et simple, j'affiche la source d'une page html dans une boite de texte et et je prend une chaine le probleme c'est que la chaine change a chaque fois (c'est une session) Par contre il y a des bout de code autour qui sont fixe
le principe ça serais de trouvé deux chaine de caractère fixe une qui indiquerai le début, et une autre la fin
entre les deux chaine on prend le texte
exemple:
4d5q4d5sqd4sq5d4s5qd4sqd5sqdqs5d

on trouve "" et on trouve "
" ce qu'il y a entre la balise on l'extrais dans une autre textbox (4d5q4d5sqd4sq5d4s5qd4sqd5sqdqs5)
j'ai regardé quelque code sur vbfrance (http://www.vbfrance.com/codes/PROGRAMME-TV_34605.aspx) mais je comprend pas grand chose
la fonction replace(), impensable vue toute la longueur du code source de la page html...
split() peut être ?
Merci.

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Pour faire ce que tu cherches à faire, il te suffit de savoir utiliser les fonctions de base :
- Instr pour rechercher une chaine dans une chaine
- Mid$ pour extraire une partie de la chaine
Exemple :
Debut = Instr(1, maChaine, "")  ' Position du <
Fin = Instr(1, maChaine, "
")   ' Position du <
EntreDeux = Mid$(maChaine, Debut, Fin - Debut)

Bien sûr, il y a un petit bug que je te laisse résoudre
Pour cela, suffit de bien comprendre à quoi sert chaque instruction et de suivre ce qu'elle retourne.

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
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
ICONIC FIGURE

@jack:avec ta solution,si l'on considère la chaîne "je suis là
",il retourne la chaîne "je suis là"
en se basant sur ta solution,j'ai trouvé un palliatif pas très académique mais bon...
soit
dim d as string ="<h1>" 'd=chaine début
Debut = Instr(1, maChaine, d)  ' Position du <
Fin = Instr(1, maChaine, "
")   ' Position du <
EntreDeux = Mid$(maChaine, Debut + d.Length, Fin - Debut -D.Length)
textbox.Text=EntreDeux
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
ICONIC FIGURE

plus précisement:
EntreDeux = Mid$(maChaine, Debut + d.Length, Fin - Debut - d.Length)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
"Pas très académique" ?
C'est exactement ce qu'il fallait faire.
La méthode peu académique aurait été de mettre des chiffres en dur représentant la longueur de la première chaine recherchée.

Mais ça, c'est du VB.Net, pas du VB6.
Merci de préter plus d'attention à la catégorie de la question, on aurait pu vite s'embourber dans des exemples non compatibles.

En .Net, Mid$ à remplacer par .SubString, mais les index des caractères commencent à zéro, pas à 1.