Like – operátor (Visual Basic)

Porovná řetězec se vzorem.

Důležité

Operátor Like se v současné době nepodporuje v projektech .NET Core a .NET Standard.

Syntaxe

result = string Like pattern  

Součástky

result
Povinný: Libovolná Boolean proměnná. Výsledkem je Boolean hodnota označující, zda string splňuje patternpodmínky .

string
Povinný: Libovolný String výraz.

pattern
Povinný: Libovolný String výraz, který odpovídá konvencím porovnávání vzorů popsaným v části Poznámky.

Poznámky

Pokud hodnota v string splňuje vzor obsažený , patternresult je True. Pokud řetězec nevyhovuje vzoru, result je False. Pokud jsou oba string a pattern jsou prázdné řetězce, výsledek je True.

Metoda porovnání

Chování operátoru Likezávisí na příkazu Option Compare. Výchozí metoda porovnání řetězců pro každý zdrojový soubor je Option Compare Binary.

Možnosti vzorku

Integrované porovnávání vzorů poskytuje univerzální nástroj pro porovnání řetězců. Funkce porovnávání vzorů umožňují spárovat jednotlivé znaky string s určitým znakem, zástupným znakem, seznamem znaků nebo rozsahem znaků. V následující tabulce jsou uvedeny povolené pattern znaky a jejich shoda.

Znaky v pattern Shody v string
? Libovolný jeden znak
* Nula nebo více znaků
# Libovolná jednoduchá číslice (0–9)
[charlist] Libovolný jeden znak v charlist
[!charlist] Libovolný jeden znak, který není v charlist

Seznamy znaků

Skupinu jednoho nebo více znaků (charlist) uzavřených v hranatých závorkách ([ ]) lze použít ke shodě libovolného jednoho znaku string a může obsahovat téměř jakýkoli kód znaku včetně číslic.

Vykřičník (!) na začátku charlist znamená, že shoda se provede v případě, že je nalezen stringlibovolný znak s výjimkou znaků v charlist . Při použití vnějších závorek se vykřičník shoduje se samotným.

Speciální znaky

Chcete-li se shodovat se speciálními znaky v levé závorce ([), otazníkem (?), znaménkem čísla (#) a hvězdičkou (*), uzavřete je do závorek. Pravá hranatá závorka (]) se nedá použít v rámci skupiny, aby se shodovala sama se sebou, ale dá se použít mimo skupinu jako jednotlivý znak.

Sekvence [] znaků se považuje za řetězec nulové délky (""). Nemůže však být součástí seznamu znaků uzavřených v hranatých závorkách. Pokud chcete zkontrolovat, jestli pozice v string jednom ze skupin znaků nebo vůbec žádný znak obsahuje, můžete použít Like dvakrát. Příklad najdete v tématu Postupy: Porovnávání řetězce se vzorem.

Rozsahy znaků

Pomocí spojovníku () k oddělení dolní a horní hranice rozsahu charlist lze určit rozsah znaků. Výsledkem je například shoda, [A–Z] pokud odpovídající pozice znaku obsahuje string libovolný znak v rozsahu AZ a [!H–L] výsledkem je shoda, pokud odpovídající pozice znaku obsahuje libovolný znak mimo oblast HL.

Když zadáte rozsah znaků, musí se zobrazit ve vzestupném pořadí řazení, tj. od nejnižšího po nejvyšší. [A–Z] Je tedy platným vzorem, ale [Z–A] není.

Více oblastí znaků

Pokud chcete zadat více oblastí pro stejnou pozici znaku, umístěte je do stejných závorek bez oddělovačů. Výsledkem je například shoda, [A–CX–Z] pokud odpovídající pozice znaku obsahuje string libovolný znak v oblasti AneboC oblastiXZ.

Použití spojovníku

Pomlčka () se může objevit buď na začátku (po vykřičníku, pokud existuje) nebo na konci samotné shody charlist . V jakémkoli jiném umístění označuje spojovník rozsah znaků oddělených znaky na obou stranách pomlčky.

Pořadí kolace

Význam zadaného rozsahu závisí na pořadí znaků v době běhu podle nastavení Option Compare národního prostředí systému, na kterém kód běží. S Option Compare Binary, rozsah [A–E] odpovídá A, B, CDa E. S Option Compare Text, [A–E] shodami A, a, , , À, CcBàDdb, E, a .e Oblast se neshoduje Ê nebo ê protože se zvýrazňované znaky kompletují po neaktucentovaných znachů v pořadí řazení.

Znaky digrafu

V některých jazycích existují abecední znaky, které představují dva samostatné znaky. Například několik jazyků používá znak æ k reprezentaci znaků a a e jejich společné zobrazení. Operátor Like rozpozná, že jeden znak digrafu a dva jednotlivé znaky jsou ekvivalentní.

Pokud je jazyk, který používá znak digrafu, zadán v nastavení národního prostředí systému, výskyt jednoho znaku digrafu v obou pattern nebo string odpovídá ekvivalentní dvouznakové sekvenci v druhém řetězci. Podobně znak digrafu v pattern uzavřených závorkách (sám o sobě, v seznamu nebo v oblasti) odpovídá ekvivalentní dvouznakové sekvenci v string.

Přetížení

Operátor Like může být přetížen, což znamená, že třída nebo struktura mohou předefinovat jeho chování, pokud operand má typ této třídy nebo struktury. Pokud váš kód používá tento operátor pro takovou třídu nebo strukturu, ujistěte se, že rozumíte jeho předdefinované chování. Další informace naleznete v tématu Procedury operátoru.

Příklad

Tento příklad používá Like operátor k porovnání řetězců s různými vzory. Výsledky se převedou do Boolean proměnné označující, jestli každý řetězec splňuje tento vzor.

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

Viz také