Like (opérateur Visual Basic)

Compare une chaîne à un modèle.

Important

L’opérateur Like n’est actuellement pas pris en charge dans les projets .NET Core et .NET Standard.

Syntaxe

result = string Like pattern  

Éléments

result
Obligatoire. Toute variable Boolean. Le résultat est une valeur Boolean indiquant si string est conforme, ou non, au pattern.

string
Obligatoire. Toute expression String .

pattern
Obligatoire. Toute expression String conforme aux critères spéciaux décrits dans « Notes ».

Notes

Si la valeur de string est conforme au modèle contenu dans pattern, result est True. Si la chaîne n’est pas au conforme au modèle, result est False. Si string et pattern sont tous deux des chaînes vides, le résultat est True.

Méthode de comparaison

Le comportement de l’opérateur Like dépend de l’instruction Option Compare. La méthode de comparaison de chaînes par défaut pour chaque fichier source est Option Compare Binary.

Options de modèle

Les critères spéciaux intégrés offrent un outil polyvalent pour les comparaisons de chaînes. Les fonctionnalités de critères spéciaux vous permettent de faire correspondre chaque caractère dans string à un caractère spécifique, un caractère générique, une liste de caractères ou une plage de caractères. Le tableau suivant indique les caractères autorisés dans pattern et leur correspondance.

Caractères dans pattern Correspondances dans string
? Tout caractère unique
* Zéro ou plusieurs caractères
# N’importe quel chiffre (0 à 9)
[charlist] N’importe quel caractère unique dans charlist
[!charlist] N’importe quel caractère unique qui n’est pas dans charlist

Listes de caractères

Un groupe d’un ou plusieurs caractères (charlist) entre crochets ([ ]) peut être utilisé pour faire correspondre n’importe quel caractère dans string et peut inclure presque n’importe quel code de caractère, y compris les chiffres.

Un point d’exclamation (!) au début de charlist signifie qu’une correspondance est établie si un caractère à l’exception des caractères dans charlist est trouvé dans string. Lorsqu’il est utilisé en dehors des crochets, le point d’exclamation correspond à lui-même.

Caractères spéciaux

Pour faire correspondre les caractères spéciaux crochet gauche ([), point d’interrogation (?), signe dièse (#) et astérisque (*), placez-les entre crochets. Le crochet droit (]) ne peut pas être utilisé dans un groupe pour correspondre à lui-même, mais il peut être utilisé en dehors d’un groupe en tant que caractère individuel.

La séquence de caractères [] est considérée comme une chaîne de longueur nulle (""). Toutefois, elle ne peut pas faire partie d’une liste de caractères placée entre crochets. Si vous souhaitez vérifier si une position dans string contient un groupe de caractères ou aucun caractère du tout, vous pouvez utiliser Like deux fois. Pour obtenir un exemple, consultez Guide pratique : faire correspondre une chaîne à un modèle.

Plages de caractères

En utilisant un trait d’union () pour séparer les limites inférieure et supérieure de la plage, charlist peut spécifier une plage de caractères. Par exemple, [A–Z] aboutit à une correspondance si la position de caractère correspondante dans string contient n’importe quel caractère dans la plage AZ, tandis que [!H–L] aboutit à une correspondance si la position de caractère correspondante contient n’importe quel caractère en dehors de la plage HL.

Lorsque vous spécifiez une plage de caractères, celle-ci doit apparaître dans l’ordre de tri croissant, c’est-à-dire du plus bas au plus élevé. Par conséquent, [A–Z] est un modèle valide, mais [Z–A] ne l’est pas.

Plages de caractères multiples

Pour spécifier plusieurs plages pour la même position de caractère, placez-les entre les mêmes crochets sans délimiteurs. Par exemple, [A–CX–Z] aboutit à une correspondance si la position de caractère correspondante dans string contient un caractère dans la plage AC ou la plage XZ.

Utilisation du trait d’union

Un trait d’union () peut apparaître au début (après un point d’exclamation, le cas échéant) ou à la fin de charlist pour correspondre à lui-même. Dans tous les autres emplacements, le trait d’union identifie une plage de caractères délimités par les caractères de chaque côté du trait d’union.

Séquence de collecte

La signification d’une plage spécifiée dépend de l’ordre des caractères au moment de l’exécution, tel que déterminé par Option Compare et le paramètre régional système sur lequel le code s’exécute. Avec Option Compare Binary, la plage [A–E] correspond à A, B, C, D et E. Avec Option Compare Text, [A–E] correspond à A, a, À, à, B, b, C, c, D, d, E et e. La plage ne correspond pas à Ê ou à ê parce que les caractères accentués arrivent après les caractères non accentués dans l’ordre de tri.

Caractères digraphes

Dans certaines langues, il existe des caractères alphabétiques qui représentent deux caractères distincts. Par exemple, plusieurs langues utilisent le caractère æ pour représenter les caractères a et e lorsqu’ils apparaissent ensemble. L’opérateur Like reconnaît que le caractère digraphe unique et les deux caractères individuels sont équivalents.

Lorsqu’une langue qui utilise un caractère digraphe est spécifiée dans les paramètres régionaux système, une occurrence du caractère digraphe unique dans pattern ou string correspond à la séquence de deux caractères équivalente dans l’autre chaîne. De même, un caractère digraphe dans pattern placé entre crochets (tout seul, dans une liste ou dans une plage) correspond à la séquence de deux caractères équivalente dans string.

Surcharge

L’opérateur Like peut être surchargé, ce qui signifie qu’une classe ou une structure peut redéfinir son comportement lorsqu’un opérande a le type de cette classe ou structure. Si votre code utilise cet opérateur sur ce type de classe ou structure, veillez à comprendre son comportement une fois qu’il est redéfini. Pour plus d'informations, consultez Operator Procedures.

Exemple

Cet exemple utilise l’opérateur Like pour comparer des chaînes à différents modèles. Les résultats passent dans une variable Boolean indiquant si chaque chaîne est conforme au modèle.

Dim testCheck As Boolean
' The following statement returns True (does "F" satisfy "F"?)
testCheck = "F" Like "F"
' The following statement returns False for Option Compare Binary
'    and True for Option Compare Text (does "F" satisfy "f"?)
testCheck = "F" Like "f"
' The following statement returns False (does "F" satisfy "FFF"?)
testCheck = "F" Like "FFF"
' The following statement returns True (does "aBBBa" have an "a" at the
'    beginning, an "a" at the end, and any number of characters in 
'    between?)
testCheck = "aBBBa" Like "a*a"
' The following statement returns True (does "F" occur in the set of
'    characters from "A" through "Z"?)
testCheck = "F" Like "[A-Z]"
' The following statement returns False (does "F" NOT occur in the 
'    set of characters from "A" through "Z"?)
testCheck = "F" Like "[!A-Z]"
' The following statement returns True (does "a2a" begin and end with
'    an "a" and have any single-digit number in between?)
testCheck = "a2a" Like "a#a"
' The following statement returns True (does "aM5b" begin with an "a",
'    followed by any character from the set "L" through "P", followed
'    by any single-digit number, and end with any character NOT in
'    the character set "c" through "e"?)
testCheck = "aM5b" Like "a[L-P]#[!c-e]"
' The following statement returns True (does "BAT123khg" begin with a
'    "B", followed by any single character, followed by a "T", and end
'    with zero or more characters of any type?)
testCheck = "BAT123khg" Like "B?T*"
' The following statement returns False (does "CAT123khg"?) begin with
'    a "B", followed by any single character, followed by a "T", and
'    end with zero or more characters of any type?)
testCheck = "CAT123khg" Like "B?T*"

Voir aussi