Delen via


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 stringpattern.

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 Falsedit . Als beide string en pattern lege tekenreeksen zijn, is Truehet 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 charliststring. 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 Abevat en [!H–L]Zresulteert in een overeenkomst als de bijbehorende tekenpositie een teken buiten het bereik Hbevat.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 AofC het bereik XZbevat.

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, cdDen .eE 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 patternstring 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*"

Zie ook