INSTR |
Dans la chaîne |
|---|---|
| ASP 3.0 | |
Syntaxe
|
Function InStr(p As Integer,s As String,t As String[, Compare As VbCompareMethod]) |
Paramètres
| Nom | Description | ||
|---|---|---|---|
| p | Ce paramètre permet d'indiquer la position en nombre de caractères de début où commence la recherche | ||
| s | Ce paramètre permet d'indiquer la chaîne de caractères contenant la source dans lequel il faudra chercher | ||
| t | Ce paramètre permet d'indiquer la chaîne de caractères contenant la chaîne à rechercher | ||
| Compare | Ce paramètre permet d'indiquer la méthode comparaison : | ||
| Valeur | Constante | Description | |
| 0 | vbBinaryCompare | Cette valeur permet d'indiquer qu'il faut effectuer une comparaison binaire. C'est la valeur par défaut | |
| 1 | vbTextCompare | Cette valeur permet d'indiquer qu'il faut effectuer une comparaison texte. | |
Description
Cette fonction retourne la position d'une sous-chaîne de caractères contenu dans une chaîne de caractères et 0 si elle ne s'y trouve pas.
Remarques
- La fonction InStr est très utile pour localiser une sous-chaîne dans une chaîne plus grande, en retournant la position de sa première occurrence. Si la sous-chaîne n'est pas trouvée, elle retourne 0, ce qui permet de gérer facilement les cas d'absence. C'est un outil fondamental pour analyser ou filtrer des données textuelles.
- Le paramètre p définit la position de départ de la recherche, ce qui donne une grande flexibilité. On peut ainsi ignorer les premiers caractères d'une chaîne ou continuer une recherche après une première occurrence. Cela permet, par exemple, d'identifier la deuxième apparition d'un mot dans un texte.
- La chaîne de caractères s correspond à la source, c'est-à-dire le texte dans lequel on effectue la recherche. Quant à la chaîne de caractères t, c'est le motif recherché, qui peut être une lettre, un mot, ou une séquence de caractères. Il est crucial de bien différencier les deux pour éviter des résultats erronés.
- Le paramètre Compare permet de spécifier la méthode de comparaison : binaire (vbBinaryCompare) ou textuelle (vbTextCompare). Le mode binaire est sensible à la casse (majuscule/minuscule), tandis que le mode textuel ne l'est pas. Ce choix influence directement les résultats, notamment dans les recherches sur du texte utilisateur.
- Par défaut, InStr utilise la comparaison binaire, ce qui signifie que "a" et "A" sont considérés comme différents. Cela peut poser problème si l'on ne s'attend pas à cette distinction, surtout dans des recherches en langage naturel. Il est donc souvent judicieux de spécifier vbTextCompare pour éviter des faux négatifs.
- Grâce à sa capacité à retourner des positions précises, InStr est très utile pour extraire des sous-chaînes avec la fonction Mid. On peut l'utiliser pour isoler des parties de texte encadrées par des marqueurs spécifiques. C'est fréquent dans l'analyse de chaînes structurées comme les URLs, les balises HTML ou les journaux de bord.
- Une utilisation classique consiste à vérifier la présence d'un mot-clé dans une requête ou un contenu utilisateur. Cela permet de déclencher certaines actions conditionnelles, comme des filtres, des redirections ou des alertes. Elle contribue donc fortement à l'interactivité et à la sécurité dans les scripts ASP.
- Même si InStr semble simple, elle doit être utilisée avec soin dans les grandes chaînes ou les boucles fréquentes. Des appels successifs mal optimisés peuvent ralentir le traitement, notamment sur de gros volumes de texte. Il est parfois préférable d'optimiser les comparaisons ou de limiter les recherches au strict nécessaire.
Exemple
Voici un exemple d'une utilisation typique de cette fonction :
- <%
- Response.Write "InStr(""Sylvain Maltais"",""Mal"")= " & InStr("Sylvain Maltais","Mal") & "<br />"
- Response.Write "InStr(""Sylvain Maltais"",""a"") = " & InStr("Sylvain Maltais","a") & "<br />"
- Response.Write "InStr(1,""Sylvain Maltais"",""a"") = " & InStr(1,"Sylvain Maltais","a") & "<br />"
- Response.Write "InStr(8,""Sylvain Maltais"",""a"") = " & InStr(8,"Sylvain Maltais","a") & "<br />"
- %>
on obtiendra le résultat suivant :
InStr("Sylvain Maltais","Mal")= 9InStr("Sylvain Maltais","a") = 5
InStr(1,"Sylvain Maltais","a") = 5
InStr(8,"Sylvain Maltais","a") = 10
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Vendredi, le 10 octobre 2014