Like Operator (Visual Basic)
Vergelijkt een tekenreeks met een patroon.
Belangrijk
De Like
operator wordt momenteel niet ondersteund in .NET Core- en .NET Standard-projecten.
Syntaxis
result = string Like pattern
generator
result
Vereist. Elke Boolean
variabele. Het resultaat is een Boolean
waarde die aangeeft of het wel of niet voldoet aan de string
pattern
.
string
Vereist. Elke String
expressie.
pattern
Vereist. Elke String
expressie die voldoet aan de patroonkoppelingsconventies die worden beschreven in 'Opmerkingen'.
Opmerkingen
Als de waarde in string
voldoet aan het patroon in pattern
, result
is True
. Als de tekenreeks niet aan het patroon voldoet, result
is False
dit . Als beide string
en pattern
lege tekenreeksen zijn, is True
het resultaat .
Vergelijkingsmethode
Het gedrag van de Like
operator is afhankelijk van de optie-vergelijkingsinstructie. De standaardmethode voor tekenreeksvergelijking voor elk bronbestand is Option Compare Binary
.
Patroonopties
Ingebouwde patroonkoppeling biedt een veelzijdig hulpmiddel voor tekenreeksvergelijkingen. Met de patroonkoppelingsfuncties kunt u elk teken string
vergelijken met een specifiek teken, een jokerteken, een lijst met tekens of een tekenbereik. In de volgende tabel ziet u de toegestane tekens en de overeenkomende tekens pattern
.
Tekens in pattern |
Komt overeen in string |
---|---|
? |
Een willekeurig teken |
* |
Nul of meer tekens |
# |
Een enkel cijfer (0-9) |
[charlist] |
Een willekeurig teken in charlist |
[!charlist] |
Eén willekeurig teken niet in charlist |
Tekenlijsten
Een groep van een of meer tekens (charlist
) tussen vierkante haken ([ ]
) kan worden gebruikt om elk willekeurig teken in string
te passen en kan bijna elke tekencode bevatten, inclusief cijfers.
Een uitroepteken (!
) aan het begin van charlist
betekent dat er een overeenkomst wordt gemaakt als er een teken wordt gevonden, behalve de tekens in charlist
string
. Wanneer het uitroepteken buiten vierkante haken wordt gebruikt, komt het uitroepteken overeen met zichzelf.
Speciale tekens
Als u wilt overeenkomen met de speciale tekens haakje links ([
), vraagteken (?
), cijferteken (#
) en sterretje (*
), plaatst u deze tussen vierkante haken. De rechterhaak (]
) kan niet worden gebruikt binnen een groep om aan zichzelf te voldoen, maar kan buiten een groep worden gebruikt als afzonderlijk teken.
De tekenreeks []
wordt beschouwd als een tekenreeks met lengte nul (""
). Het kan echter geen deel uitmaken van een tekenslijst tussen vierkante haken. Als u wilt controleren of een positie in string
een van een groep tekens of helemaal geen teken bevat, kunt u twee keer gebruiken Like
. Zie Procedure : Een tekenreeks vergelijken met een patroon voor een voorbeeld.
Tekenbereiken
Door een afbreekstreepje (–
) te gebruiken om de onder- en bovengrenzen van het bereik te scheiden, charlist
kunt u een bereik van tekens opgeven. Resulteert bijvoorbeeld [A–Z]
in een overeenkomst als de bijbehorende tekenpositie string
een teken binnen het bereik A
bevat en [!H–L]
Z
resulteert in een overeenkomst als de bijbehorende tekenpositie een teken buiten het bereik H
bevat.L
Wanneer u een bereik van tekens opgeeft, moeten deze in oplopende sorteervolgorde worden weergegeven, dat wil gezegd van laag naar hoog. [A–Z]
Is dus een geldig patroon, maar [Z–A]
niet.
Meerdere tekenbereiken
Als u meerdere bereiken voor dezelfde tekenpositie wilt opgeven, plaatst u deze tussen dezelfde haken zonder scheidingstekens. Resulteert bijvoorbeeld [A–CX–Z]
in een overeenkomst als de bijbehorende tekenpositie string
een teken in het bereik A
ofC
het bereik X
Z
bevat.
Gebruik van het afbreekstreepje
Een afbreekstreepje (–
) kan worden weergegeven aan het begin (na een uitroepteken, indien van toepassing) of aan het einde van charlist
de overeenkomst met zichzelf. Op een andere locatie identificeert het afbreekstreepje een bereik van tekens dat is gescheiden door de tekens aan beide zijden van het afbreekstreepje.
Reeks samenvouwen
De betekenis van een opgegeven bereik is afhankelijk van de volgorde van tekens tijdens runtime, zoals bepaald door Option Compare
en de landinstelling van het systeem waarop de code wordt uitgevoerd. Met Option Compare Binary
, het bereik [A–E]
komt overeen A
, B
, C
, , en D
.E
Met Option Compare Text
, [A–E]
overeenkomsten A
, a
, , À
, , à
, , B
, b
, C
, c
d
D
en .e
E
Het bereik komt niet overeen Ê
of ê
omdat accenttekens in de sorteervolgorde worden samengevouwen na niet-geverifieerde tekens.
Digraph-tekens
In sommige talen zijn er alfabetische tekens die twee afzonderlijke tekens vertegenwoordigen. In verschillende talen wordt bijvoorbeeld het teken æ
gebruikt om de tekens a
weer te geven en e
wanneer deze samen worden weergegeven. De Like
operator herkent dat het teken voor één digraph en de twee afzonderlijke tekens gelijkwaardig zijn.
Wanneer een taal die gebruikmaakt van een digraph-teken wordt opgegeven in de landinstellingen van het systeem, wordt een exemplaar van het teken voor één digraph in een van pattern
string
beide of overeenkomt met de equivalente reeks van twee tekens in de andere tekenreeks. Op dezelfde manier komt een digraph-teken pattern
tussen vierkante haken (op zichzelf, in een lijst of in een bereik) overeen met de equivalente reeks van twee tekens in string
.
Overbelasting
De Like
operator kan overbelast worden, wat betekent dat een klasse of structuur het gedrag ervan opnieuw kan definiëren wanneer een operand het type van die klasse of structuur heeft. Als uw code deze operator gebruikt voor een dergelijke klasse of structuur, moet u het opnieuw gedefinieerde gedrag ervan begrijpen. Zie Operator Procedures voor meer informatie.
Opmerking
In dit voorbeeld wordt de Like
operator gebruikt om tekenreeksen te vergelijken met verschillende patronen. De resultaten gaan naar een Boolean
variabele die aangeeft of elke tekenreeks voldoet aan het patroon.
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*"