Fonction InStr et particularités [VB] - VB/VBA/VBS - Programmation
Marsh Posté le 10-12-2003 à 15:47:34
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 !
Marsh Posté le 10-12-2003 à 15:57:01
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 ? |
Merci pour ta p'tite leçon de morale 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
Marsh Posté le 10-12-2003 à 17:54:06
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.
Marsh Posté le 11-12-2003 à 09:09:22
Le Penseur Fou a écrit : temp= mid(tachaine, instr(tachaine,chainearecherchée),len(chainearecherchée)) doit renvoyer la chaine a recherchée ou 0 |
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" |
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
Marsh Posté le 11-12-2003 à 09:19:00
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 ?)
Marsh Posté le 11-12-2003 à 09:21:10
JagStang a écrit : comment crois-tu que ta fonction matchWholeWord détermine s'il c'est un mot complet ou pas ? |
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...)
Marsh Posté le 11-12-2003 à 09:22:04
ah ben si les mots sont accolées entre eux ils ne forme plus qu'un seul mot...
Marsh Posté le 11-12-2003 à 10:13:21
[HS]
ptain!
mais on a fait un GN ensemble il me semble!!!!
le GN de loic cet été! \o/
c'été vous les trash nains!
[/HS]
Marsh Posté le 11-12-2003 à 10:19:35
Corbier 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.
Marsh Posté le 11-12-2003 à 10:21:43
Le Penseur Fou a écrit : |
Et s'il y a de la ponctuation genre virgule ou point ?
Marsh Posté le 11-12-2003 à 10:28:25
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
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
Marsh Posté le 11-12-2003 à 10:34:07
Taiche a écrit : |
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.
Marsh Posté le 11-12-2003 à 10:38:47
Comment t'es trop fort
Marsh Posté le 10-12-2003 à 15:42:41
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...
---------------
Sans ma barbe, quelle barbe !