Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[Résolu] [VB6] Besoin d'une fonction de recherche de mots


Messages recommandés

Posté(e) (modifié)

Tout d'abord bonjour à tous et merci de m'aider dans la réalisation de mon programme en VB6.

Je vous explique vite fait mon problème. J'ai besoin de rechercher un mot dans un texte qui se trouve entre 2 autres mots. Par exemple, si on a la phrase suivante : "Je cherche une solution pour résoudre mon problème." , je veux donner à la fonction le mot "une" et "pour" et elle me trouve "solution".

 

Merci d'avance pour votre aide :P

Modifié par Deejayfool

Posté(e)

Salut,

 

Voici un ptit exemple vite fait:

Private Function FindWordBetween(ByRef MyString As String, ByRef KeyWord1 As String, ByRef KeyWord2 As String) As String

Dim lPos1   As Long
Dim lPos2   As Long
Dim NxtPos  As Long
Dim TxtLen  As Long
Dim TxtLenB As Long

TxtLen = Len(MyString)
lPos1 = InStr(1, MyString, KeyWord1)
If lPos1 = 0 Then Exit Function
NxtPos = lPos1 + Len(KeyWord1)
If NxtPos >= TxtLen Then Exit Function
lPos2 = InStr(NxtPos, MyString, KeyWord2)
TxtLenB = lPos2 - (lPos1 + Len(KeyWord2))
If NxtPos + TxtLenB > TxtLen Then TxtLenB = TxtLen - NxtPos
If lPos2 >= NxtPos Then FindWordBetween = Mid$(MyString, NxtPos, TxtLenB)

End Function

 

Bon c'est fait a la volée ne sachant pas dans quel contexte tu dois l'utiliser, si tu dois appeler cette fonction beaucoup de fois dans une boucle ou autre ca risque de pas etre super rapide.

 

++

Posté(e)

Merci beaucoup sebdraluorg pour la rapidité de ta réponse.

Ta fonction m'a beaucoup aidé. Il y a juste eu un petit problème car lorsque je l'utilisais, il affichait bien le mot recherché mais il donnait aussi des lettres en plus. J'ai analysé un peu ton code pour trouver qu'il fallait remplacer :

 

TxtLenB = lPos2 - (lPos1 + Len(KeyWord2))

 

Par

 

TxtLenB = lPos2 - NxtPos

 

J'ai aussi un peu raccourcis ton code car dans mon cas, il n'y a pas besoin d'autant de vérifications.

Encore merci sebdraluorg :P !

Posté(e)

Yep j'avais vu l'erreur en me relisant....

 

Voici la correction...

 

Private Function FindWordBetween(ByRef MyString As String, ByRef KeyWord1 As String, ByRef KeyWord2 As String) As String

Dim lPos1	   As Long
Dim lPos2	   As Long
Dim NxtPos	  As Long
Dim TxtLen	  As Long

TxtLen = Len(MyString)
lPos1 = InStr(1, MyString, KeyWord1)
If lPos1 > 0 Then
	NxtPos = lPos1 + Len(KeyWord1)
	If NxtPos < TxtLen Then
		lPos2 = InStr(NxtPos, MyString, KeyWord2)
		If lPos2 > NxtPos Then FindWordBetween = Trim$(Mid$(MyString, NxtPos, lPos2 - NxtPos))
	End If
End If

End Function

 

++

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...