Retrouver un mot dans une chaine

Résolu
petiflamand
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
- 25 janv. 2005 à 22:30
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
- 26 janv. 2005 à 17:32
Salut j'ai dans un fichier text des ligne que je reprend dans un string

Comment faire pour retrouver un mot dans le string

exemple :

le livre de la mer du nord est la venue de la ville ect.........

comment retrouver par exemple nord

Merci

6 réponses

cqui789
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
18 mai 2009
3
26 janv. 2005 à 02:16
utilise les espaces...


dim p as integer
p = instr(" " & Tastring & " " , TonMot)

if p>0 then msgbox(mid$(tastring,p+1, len(Tonmot)))

bon, il faut rajouter un test avec une virgule apres...
3
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
26 janv. 2005 à 17:32
Sinon, tu as une autre méthode si ton texte ne fait pas des kilomètres. Le split :

dim t() as string
t = split(TonTexte," ")

et tu l'interroges comme ça :
dim i as integer
for i = 0 to ubound(t)
if t(i) like TonMot & "*" then
msgbox "trouvé"
exit for
endif
next

tu peux même compter le nombre de fois que tu le trouves
dim i as integer
dim cpt as integer
cpt = 0
for i = 0 to ubound(t)
if t(i) like TonMot & "*" then
cpt=cpt +1
endif
next

j'utilise like au lieu de =, comme ça tu peux aussi trouver les les "commençant par".

et puis, si les ponctuations te gènent, avant tu fais :
TonTexte = replace(TonTexte, ".","")
TonTexte = replace(TonTexte, ",","")
TonTexte = replace(TonTexte, "!","")
TonTexte = replace(TonTexte, "?","")
etc....

encore plus loin, quand tu effaces un "!" par exemple dans "hue ! au galop" il te reste un double espace que tu peux remplacer par 1 seul :
TonTexte = replace(TonTexte, " "," ")

Cordialement, CanisLupus
3
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
25 janv. 2005 à 22:59
salut

dim p as integer
p = instr(Tastring, TonMot)

if p>0 then msgbox(mid$(tastring,p, len(Tonmot)))

Cordialement, CanisLupus
0
petiflamand
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
25 janv. 2005 à 23:28
Sa marche en partie car quand tu fait par exemple

"la partie de charles est la face avant de ....." comme string
et que je cherche "les" il me donnes "charles"
je voudrais qu'il rechere uniquement "les"
c'est un exemple bien sur

Merci
0

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

Posez votre question
ticomic
Messages postés
57
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
29 avril 2005

26 janv. 2005 à 02:46
Une virgule?
Et un point, et un point d'exclamation, etc.
Il faudrait, si tu veux seulement les mots, t'assurer qu'il y a un symbole qui n'est pas une lettre avant et apres le string (sauf si le mot commence ou finit la chaine). sans avoir a refaire le test 204^2 fois!

Il faut donc que le code de caractere ASCII avant et apres le mot trouvé ne soit pas plus grand que celui qui représente la plus grande lettre, et pas plus petit que le code repr/sentant "a". (Avec les fonction Asc et Mid)

C'est le seul moyen que je vois personnellement...

(Corrigez-moi si je me trompe)
0
cqui789
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
18 mai 2009
3
26 janv. 2005 à 09:27
oui mais il faut aussi tenir compte des accents



trouver 'jet" dans 'La jeté'



bon courrage
0