Dela via


Like Operator (Visual Basic)

Jämför en sträng med ett mönster.

Viktigt!

Operatorn Like stöds för närvarande inte i .NET Core- och .NET Standard-projekt.

Syntax

result = string Like pattern  

Delar

result
Obligatoriska. Valfri Boolean variabel. Resultatet är ett Boolean värde som anger om uppfyller stringpattern.

string
Obligatoriska. Alla String uttryck.

pattern
Obligatoriska. Alla String uttryck som överensstämmer med de mönstermatchningskonventioner som beskrivs i "Kommentarer".

Kommentarer

Om värdet i string uppfyller mönstret i patternär . resultTrue Om strängen inte uppfyller mönstret result är False. Om både string och pattern är tomma strängar blir Trueresultatet .

Jämförelsemetod

Beteendet för operatorn Like beror på instruktionen Jämförelse av alternativ. Standardmetoden för strängjämförelse för varje källfil är Option Compare Binary.

Mönsteralternativ

Inbyggd mönstermatchning är ett mångsidigt verktyg för strängjämförelser. Med mönstermatchningsfunktionerna kan du matcha varje tecken i string mot ett visst tecken, ett jokertecken, en teckenlista eller ett teckenintervall. I följande tabell visas de tecken som tillåts i pattern och vad de matchar.

Tecken i pattern Matchar i string
? Valfritt enskilt tecken
* Noll eller fler tecken
# Alla ensiffriga siffror (0–9)
[charlist] Alla enskilda tecken i charlist
[!charlist] Alla enskilda tecken som inte finns i charlist

Teckenlistor

En grupp med ett eller flera tecken (charlist) inom hakparenteser ([ ]) kan användas för att matcha ett enskilt tecken i string och kan innehålla nästan vilken teckenkod som helst, inklusive siffror.

Ett utropstecken (!) i början av charlist innebär att en matchning görs om något tecken förutom tecknen i charlist hittas i string. När utropspunkten används utanför hakparenteser matchar den sig själv.

Specialtecken

Om du vill matcha specialtecken vänster hakparentes ([), frågetecken (?), taltecken (#) och asterisk (*), omsluta dem inom hakparenteser. Den högra hakparentesen (]) kan inte användas i en grupp för att matcha sig själv, men den kan användas utanför en grupp som ett enskilt tecken.

Teckensekvensen [] anses vara en sträng med noll längd (""). Det kan dock inte ingå i en teckenlista inom hakparenteser. Om du vill kontrollera om en position i string innehåller ett av en grupp med tecken eller inget tecken alls kan du använda Like två gånger. Ett exempel finns i Så här: Matcha en sträng mot ett mönster.

Teckenintervall

Genom att använda ett bindestreck () för att avgränsa intervallets charlist nedre och övre gränser kan du ange ett teckenintervall. Till exempel resulterar [A–Z] det i en matchning om motsvarande teckenposition i string innehåller något tecken inom intervallet AZ och [!H–L] resulterar i en matchning om motsvarande teckenposition innehåller något tecken utanför intervallet HL.

När du anger ett teckenintervall måste de visas i stigande sorteringsordning, det vill säga från lägsta till högsta. [A–Z] Det är alltså ett giltigt mönster, men [Z–A] det är det inte.

Flera teckenintervall

Om du vill ange flera intervall för samma teckenposition placerar du dem inom samma hakparenteser utan avgränsare. Till exempel resulterar [A–CX–Z] det i en matchning om motsvarande teckenposition i string innehåller något tecken inom intervallet AC eller intervallet XZ .

Användning av bindestrecket

Ett bindestreck () kan visas antingen i början (efter ett utropstecken, om det finns) eller i slutet av charlist för att matcha sig själv. På andra platser identifierar bindestrecket ett intervall med tecken som avgränsas av tecknen på vardera sidan av bindestrecket.

Sorteringssekvens

Innebörden av ett angivet intervall beror på teckenordningen vid körning, vilket bestäms av Option Compare och språkinställningen för systemet som koden körs på. Med Option Compare Binarymatchar Aintervallet [A–E] , B, C, Doch E. Med Option Compare Text, [A–E] matchar A, a, À, à, B, b, C, , c, D, d, Eoch e. Intervallet matchar Ê inte eller ê på grund av att de accenttecken som har samlats in efter oanvända tecken i sorteringsordningen.

Digraph-tecken

På vissa språk finns det alfabetiska tecken som representerar två separata tecken. Flera språk använder till exempel tecknet æ för att representera tecknen a och e när de visas tillsammans. Operatorn Like känner igen att det enskilda digraftecknet och de två enskilda tecknen är likvärdiga.

När ett språk som använder ett digraftecken anges i inställningarna för systemspråket matchar en förekomst av det enskilda digraftecknet i antingen pattern eller string motsvarande tvåteckenssekvens i den andra strängen. På samma sätt matchar ett digraftecken inom pattern hakparenteser (i sig, i en lista eller i ett intervall) motsvarande sekvens med två tecken i string.

Överbelastning

Operatorn Like kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende när en operande har den typen av klass eller struktur. Om din kod använder den här operatorn i en sådan klass eller struktur bör du se till att du förstår dess omdefinierade beteende. Mer information finns i Operatorprocedurer.

Exempel

I det här exemplet används operatorn Like för att jämföra strängar med olika mönster. Resultaten går till en Boolean variabel som anger om varje sträng uppfyller mönstret.

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*"

Se även