Retrouver un mot dans une chaine [Résolu]

petiflamand 675 Messages postés samedi 31 mai 2003Date d'inscription 26 mai 2013 Dernière intervention - 25 janv. 2005 à 22:30 - Dernière réponse : cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention
- 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
Afficher la suite 

6 réponses

cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 26 janv. 2005 à 02:16
+3
Utile
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...
Cette réponse vous a-t-elle aidé ?  
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 26 janv. 2005 à 17:32
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 25 janv. 2005 à 22:59
0
Utile
salut

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

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

Cordialement, CanisLupus
petiflamand 675 Messages postés samedi 31 mai 2003Date d'inscription 26 mai 2013 Dernière intervention - 25 janv. 2005 à 23:28
0
Utile
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
ticomic 57 Messages postés mercredi 22 décembre 2004Date d'inscription 29 avril 2005 Dernière intervention - 26 janv. 2005 à 02:46
0
Utile
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)
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 26 janv. 2005 à 09:27
0
Utile
oui mais il faut aussi tenir compte des accents



trouver 'jet" dans 'La jeté'



bon courrage

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.