INSTRB |
Dans la chaine binaire |
|---|---|
| Visual Basic | |
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 utilisée pour travailler sur des chaînes en mode binaire, ce qui signifie que la position retournée est basée sur le nombre d'octets et non sur le nombre de caractères, ce qui est particulièrement important pour les jeux de caractères multi-octets.
- Le premier paramètre p permet de spécifier une position de départ pour la recherche. Cela est utile si l'on souhaite ignorer les premiers caractères de la chaîne source et commencer la recherche à un endroit précis.
- Le paramètre Compare permet d'effectuer soit une comparaison binaire (sensible à la casse), soit une comparaison textuelle (insensible à la casse), ce qui rend la fonction adaptable selon le contexte de recherche.
- La fonction retourne 0 si la sous-chaîne recherchée n'est pas trouvée, ce qui facilite l'écriture de tests conditionnels simples pour valider la présence ou l'absence d'une séquence donnée.
- InStrB est particulièrement utile dans des applications traitant directement des données binaires ou des fichiers bruts, où chaque octet compte et où l'approche caractère par caractère pourrait produire des erreurs.
- La différence entre InStr et InStrB devient évidente avec des chaînes multioctets (comme dans certains codages asiatiques) : InStr retourne des positions en termes de caractères, tandis que InStrB retourne des positions en termes d'octets.
- Le fait que vbBinaryCompare soit la valeur par défaut pour la comparaison est logique, car une recherche binaire vise souvent à obtenir une correspondance exacte au niveau des octets et non seulement du contenu sémantique.
- Dans l'exemple fourni, on remarque que le même résultat est obtenu même en spécifiant une position de départ différente tant que cette position reste avant la sous-chaîne cherchée. Cela montre que la fonction cherche toujours le premier match trouvé après la position indiquée.
Exemple
Voici un exemple d'une utilisation typique de cette fonction :
- Sub Main()
- MsgBox "InStrB(""Sylvain Maltais"",""Mal"")= " & InStrB("Sylvain Maltais","Mal") & vbCrLf & _
- "InStrB(""Sylvain Maltais"",""a"") = " & InStrB("Sylvain Maltais","a") & vbCrLf & _
- "InStrB(1,""Sylvain Maltais"",""a"") = " & InStrB(1,"Sylvain Maltais","a") & vbCrLf & _
- "InStrB(8,""Sylvain Maltais"",""a"") = " & InStrB(8,"Sylvain Maltais","a")
- End Sub
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
Dernière mise à jour : Lundi, le 19 novembre 2012