INSTRB |
Dans la chaîne binaire |
|---|---|
| ASP 3.0 | |
Syntaxe
| Function InStrB(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 ASCII contenu dans une chaîne de caractères et 0 si elle ne s'y trouve pas.
Remarques
- La fonction InStrB est similaire à InStr, mais elle opère en octets plutôt qu'en caractères. Cela signifie qu'elle retourne la position d'une sous-chaîne de caractères en comptant les octets ASCII, ce qui est important dans les environnements multilingues ou binaires. Elle est surtout utile dans les contextes où la gestion précise des données binaires est nécessaire.
- En travaillant avec des chaînes de caractères ASCII, InStrB est capable de distinguer des contenus sur une base plus fine que InStr. Elle devient indispensable lorsqu'on manipule des flux binaires, des fichiers texte encodés ou des bases de données contenant des octets spécifiques. Ce niveau de granularité est important dans les traitements bas niveau.
- Le paramètre p détermine le point de départ de la recherche, en nombre d'octets, ce qui diffère de InStr utilisant des positions en caractères. Cette distinction est cruciale lorsque les chaînes contiennent des caractères multi-octets (comme dans certains encodages non-ASCII). Une mauvaise compréhension de ce comportement peut entraîner des erreurs dans les résultats de recherche.
- Le paramètre Compare permet comme dans InStr de choisir entre une comparaison binaire (vbBinaryCompare) et une comparaison textuelle (vbTextCompare). Cependant, dans InStrB, la comparaison binaire prend tout son sens, car elle opère au niveau des codes ASCII purs. Cela permet de garantir des recherches ultra-précises dans des chaînes codées de manière brute.
- L'utilisation de InStrB est rare dans les traitements purement textuels classiques, mais devient cruciale pour manipuler du contenu provenant de fichiers binaires ou de flux HTTP encodés. Elle permet par exemple de repérer un en-tête, une séquence d'octets ou un séparateur spécifique. Elle est donc précieuse pour les développeurs travaillant en bas niveau ou en analysant avancé.
- Lorsque InStrB retourne 0, cela signifie que la séquence de caractères recherchée n'a pas été trouvée à partir de la position spécifiée. Comme pour InStr, il faut donc prévoir un test conditionnel pour éviter d'utiliser un index invalide dans la suite du traitement. Cela contribue à la robustesse du code, surtout dans les scripts ASP sensibles aux erreurs d'exécution.
- Il est essentiel de ne pas confondre InStr et InStrB, car une confusion entre les deux peut entraîner des résultats incohérents ou des bogues subtils. Par exemple, dans une chaîne contenant des caractères accentués ou étendus, les positions renvoyées seront différentes. Cette différence d'unité (caractères vs octets) doit être rigoureusement respectée.
- InStrB trouve toute sa pertinence en combinaison avec d'autres fonctions binaires comme MidB, LeftB ou RightB. Ces fonctions permettent également de manipuler les chaînes au niveau des octets, offrant un contrôle fin sur la lecture ou l'extraction. C'est un outil clef pour les développeurs ASP devant interfacer avec des systèmes externes ou gérer des données non textuelles.
Exemple
Voici un exemple d'une utilisation typique de cette fonction :
- <%
- Response.Write "InStrB(""Sylvain Maltais"",""Mal"")= " & InStrB("Sylvain Maltais","Mal") & "<br />"
- Response.Write "InStrB(""Sylvain Maltais"",""a"") = " & InStrB("Sylvain Maltais","a") & "<br />"
- Response.Write "InStrB(1,""Sylvain Maltais"",""a"") = " & InStrB(1,"Sylvain Maltais","a") & "<br />"
- Response.Write "InStrB(8,""Sylvain Maltais"",""a"") = " & InStrB(8,"Sylvain Maltais","a") & "<br />"
- %>
on obtiendra le résultat suivant :
InStrB("Sylvain Maltais","Mal")= 17InStrB("Sylvain Maltais","a") = 9
InStrB(1,"Sylvain Maltais","a") = 9
InStrB(8,"Sylvain Maltais","a") = 9
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Vendredi, le 10 octobre 2014