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 21
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 21
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
Rejoignez-nous