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 string
pattern
.
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 . result
True
Om strängen inte uppfyller mönstret result
är False
. Om både string
och pattern
är tomma strängar blir True
resultatet .
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 A
–Z
och [!H–L]
resulterar i en matchning om motsvarande teckenposition innehåller något tecken utanför intervallet H
–L
.
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 A
–C
eller intervallet X
–Z
.
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 Binary
matchar A
intervallet [A–E]
, B
, C
, D
och E
. Med Option Compare Text
, [A–E]
matchar A
, a
, À
, à
, B
, b
, C
, , c
, D
, d
, E
och 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*"