Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2703 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Fonction InStr et particularités

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB] Fonction InStr et particularités

n°587503
Corbier
Barbe's powaaa
Posté le 10-12-2003 à 15:42:41  profilanswer
 

Bonjour,
 
Je me heurte actuellement à un problème lié à l'utilisation de la fonction InStr (en vb .net) :
Le fait est que je recherche un terme bien défini, par exemple "and", dans une chaîne, mais InStr me renvoie également cette expression lorsque ce n'est pas exactement le même terme, par exemple "brand"...
 
N'y a-t-il pas un paramétrage spécial ou peut-être une fonction + évoluée permettant de trouver le terme exact dans une chaîne tout en retournant la position du premier caractère (à la manière de InStr) ?
 
PS : je pourrai bidouiller en recherchant "and" avec des espaces -> " and ", mais c'est un peu trop 'bricolage' à mon goût et il peut y avoir des cas dans mon traitement où les espaces de sont pas présents...  :sweat:


---------------
Sans ma barbe, quelle barbe !
mood
Publicité
Posté le 10-12-2003 à 15:42:41  profilanswer
 

n°587512
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-12-2003 à 15:47:34  profilanswer
 

Y'a un truc que je comprendrais jamais ! Pourquoi les gens, quand ils ont une nouvelle plate forme entre les mains, s'évertuent à utiliser des fonctions obsolètes et mal foutues ?
 
Je veux dire : pourquoi te faire chier à utiliser InStr, qui n'est là que pour compatibilité avec cette merde de VB6 alors que .NET t'offre une classe String bien pratique, avec une méthode équivalente à InStr bien plus propre (String.IndexOf() ) ?
Tu as la chance d'avoir une classe String avec tout un tas de méthodes bien pratiques, alors sers t'en au lieu d'utiliser des trucs deprecated depuis belle lurette et gai luron réunis !


Message édité par Harkonnen le 10-12-2003 à 15:54:04
n°587525
Corbier
Barbe's powaaa
Posté le 10-12-2003 à 15:57:01  profilanswer
 

Harkonnen a écrit :

Y'a un truc que je comprendrais jamais ! Pourquoi les gens, quand ils ont une nouvelle plate forme entre les mains, s'évertuent à utiliser des fonctions obsolètes et mal foutues ?
 
Je veux dire : pourquoi te faire chier à utiliser InStr, qui n'est là que pour compatibilité avec cette merde de VB6 alors que .NET t'offre une classe String bien pratique, avec une méthode équivalente à InStr bien plus propre (String.IndexOf() ) ?
Tu as la chance d'avoir une classe String avec tout un tas de méthodes bien pratiques, alors sers t'en au lieu d'utiliser des trucs deprecated depuis belle lurette et gai luron réunis !


 
Merci pour ta p'tite leçon de morale  :whistle: Nan mais t'as complètement raison, mais je crois pas que dans mon cas cela change grand chose parce que IndexOf retourne l'index de la première occurence ; donc pour reprendre mon exemple précédent, s'il examine la chaîne "brand and" et que moi je recherche "and", ben il va me retourner 2 et non 6  :sweat:


---------------
Sans ma barbe, quelle barbe !
n°587665
le penseur​ fou
Posté le 10-12-2003 à 17:54:06  profilanswer
 

temp= mid(tachaine, instr(tachaine,chainearecherchée),len(chainearecherchée))  doit renvoyer la chaine a recherchée ou 0
 
un peu condensée comme formule soit.


Message édité par le penseur fou le 10-12-2003 à 17:54:32
n°588072
Corbier
Barbe's powaaa
Posté le 11-12-2003 à 09:09:22  profilanswer
 

Le Penseur Fou a écrit :

temp= mid(tachaine, instr(tachaine,chainearecherchée),len(chainearecherchée))  doit renvoyer la chaine a recherchée ou 0
 
un peu condensée comme formule soit.


 
Merci pour ta réponse, mais ça ne répond pas à mon problème, je m'explique avec un exemple :

Dim str As String = "brand and"
temp = Mid(str, InStr(str, "and" ), Len("and" ))


 
Alors bien sûr, la fonction retourne "and" dans temp, mais je recherche une fonction qui me trouve EXACTEMENT "and", et qui ne va pas l'extraire d'un autre mot, genre "brand"...
Comme par exemple lorsque l'on fait une recherche dans un document word, on lui demande de trouver le mot exact et pas les mots qui contiennent le mot à chercher  :) (matchWholeWord)
Mais visiblement, une telle fonction n'existe pas pour l'utilisation de chaînes  :(


---------------
Sans ma barbe, quelle barbe !
n°588080
jagstang
Pa Capona ಠ_ಠ
Posté le 11-12-2003 à 09:19:00  profilanswer
 

comment crois-tu que ta fonction matchWholeWord détermine s'il c'est un mot complet ou pas ?  
 
Avec les espaces bien sûr...
 
Alors ta première idée (" and " ) n'est pas si débile. seul problème, si ce mot en placé en début/fin de chaine, avec de la ponctuation etc...
 
En fait il faut chercher "and" et voir si les caractères qui l'entourent sont acceptable.
 
Je peux pas te dire si cette fonction existe quelque part (regexp ?)


Message édité par jagstang le 11-12-2003 à 09:19:19
n°588084
Corbier
Barbe's powaaa
Posté le 11-12-2003 à 09:21:10  profilanswer
 

JagStang a écrit :

comment crois-tu que ta fonction matchWholeWord détermine s'il c'est un mot complet ou pas ?  
 
Avec les espaces bien sûr...
 
Alors ta première idée (" and " ) n'est pas si débile. seul problème, si ce mot en placé en début/fin de chaine, avec de la ponctuation etc...
 
En fait il faut chercher "and" et voir si les caractères qui l'entourent sont acceptable.
 
Je peux pas te dire si cette fonction existe quelque part (regexp ?)


 
Ouaip c'est ce que je pensais faire, le tout est de gérer un max. de caractères qui peuvent se retrouver autour, parce que comme dit, ds mon traitement, des mots peuvent être accolés entre eux et ça c'est pas cool :/ (bien que ce soit rare...)


---------------
Sans ma barbe, quelle barbe !
n°588085
jagstang
Pa Capona ಠ_ಠ
Posté le 11-12-2003 à 09:22:04  profilanswer
 

ah ben si les mots sont accolées entre eux ils ne forme plus qu'un seul mot...

n°588086
jagstang
Pa Capona ಠ_ಠ
Posté le 11-12-2003 à 09:22:34  profilanswer
 

sinon tu dois attaquer avec un dictionnaire [...]

n°588138
Mr yvele
yvele n'est plus.
Posté le 11-12-2003 à 10:13:21  profilanswer
 

[HS]
 
 


 
 
ptain! :sweat:  
 
 
mais on a fait un GN ensemble il me semble!!!! [:dawa]
le GN de loic cet été! \o/
 
c'été vous les trash nains! :lol:
 
 
 
[/HS]


Message édité par Mr yvele le 11-12-2003 à 10:13:41

---------------
yvele n'est plus.
mood
Publicité
Posté le 11-12-2003 à 10:13:21  profilanswer
 

n°588143
le penseur​ fou
Posté le 11-12-2003 à 10:19:35  profilanswer
 

Corbier a écrit :


 
Merci pour ta réponse, mais ça ne répond pas à mon problème, je m'explique avec un exemple :

Dim str As String = "brand and"
temp = Mid(str, InStr(str, "and" ), Len("and" ))


 
Alors bien sûr, la fonction retourne "and" dans temp, mais je recherche une fonction qui me trouve EXACTEMENT "and", et qui ne va pas l'extraire d'un autre mot, genre "brand"...
Comme par exemple lorsque l'on fait une recherche dans un document word, on lui demande de trouver le mot exact et pas les mots qui contiennent le mot à chercher  :) (matchWholeWord)
Mais visiblement, une telle fonction n'existe pas pour l'utilisation de chaînes  :(  


 
Il te suffit de tester si les caracteres précedents et suivants sont des espaces.
tu fais donc une boucle qui se continue tant que la fonction instr ne renvoie pas  0 ou tant que les caracteres ne sont pas des espaces.

n°588146
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-12-2003 à 10:21:43  profilanswer
 

Le Penseur Fou a écrit :


Il te suffit de tester si les caracteres précedents et suivants sont des espaces.
tu fais donc une boucle qui se continue tant que la fonction instr ne renvoie pas  0 ou tant que les caracteres ne sont pas des espaces.


Et s'il y a de la ponctuation genre virgule ou point ? [:boidleau]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°588155
Corbier
Barbe's powaaa
Posté le 11-12-2003 à 10:28:25  profilanswer
 

Ben là je fais une fonction qui se démerde pour essayer de savoir si ce qu'il y avant et après, c'est bieng ou pas  :D  
C'est chiant mais ça marchera à peu près !
 
En ts cas, merci pour vos réponses !  :)  
 
Et Mr yvele, j'te MP, je crois qu'on a des choses à se dire  :sol:


Message édité par Corbier le 11-12-2003 à 10:28:43

---------------
Sans ma barbe, quelle barbe !
n°588164
le penseur​ fou
Posté le 11-12-2003 à 10:34:07  profilanswer
 

Taiche a écrit :


Et s'il y a de la ponctuation genre virgule ou point ? [:boidleau]

Dans ce cas il fait un test avec les caractéres ascii , il prend en compte tous les caractéres qui ne sont pas des lettres.

n°588172
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-12-2003 à 10:38:47  profilanswer
 

Comment t'es trop fort [:wam]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°588180
le penseur​ fou
Posté le 11-12-2003 à 10:46:09  profilanswer
 

Taiche a écrit :

Comment t'es trop fort [:wam]

:bounce:  
 
(vrai? :??: )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Fonction InStr et particularités

 

Sujets relatifs
Une fonction de formatage complete sous SQL2000?[VB] afficher le nom de la fonction en cours, est-ce possible?
fonction mail, base de données, variable, petit problème![PERL] Passage de plusieurs array en paramêtre à une fonction
[C] possible de passer une union en parametre a une fonction ?problème de création de fonction avec postgresql 7.3.4
[PHP] Fonction permettant de télécharger un fichier....[ASP]nouvelle fenetre + execution automatique d'une fonction
Positionner un pointeur dans un fichier en fonction d'une variablefonction include()
Plus de sujets relatifs à : [VB] Fonction InStr et particularités


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR