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 A
–Z
, 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 H
–L
.
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 A
–C
ou la plage X
–Z
.
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*"