Like – operátor (Visual Basic)

Porovná řetězec se vzorem.

Důležité

LikeOperátor není aktuálně podporován v projektech .NET Core a .NET Standard.

Syntax

result = string Like pattern  

Součásti

result
Povinná hodnota. Libovolná Boolean Proměnná. Výsledkem je hodnota, Boolean která označuje, zda string vyhovuje pattern .

string
Povinná hodnota. Libovolný String výraz.

pattern
Povinná hodnota. 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ý v pattern , result je True . Pokud řetězec nevyhovuje vzoru, result je False . Pokud string jsou a i pattern prázdné řetězce, výsledek je True .

Metoda porovnání

Chování Like operátora zá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

Předdefinované porovnávání vzorů poskytuje univerzální nástroj pro porovnávání řetězců. Funkce porovnávání se vzorci vám umožní porovnat jednotlivé znaky s string konkrétním znakem, zástupným znakem, seznamem znaků nebo rozsahem znaků. V následující tabulce jsou uvedeny znaky, které pattern jsou povolené v a co se shodují.

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

Seznamy znaků

Skupina jednoho nebo více znaků ( charlist ) uzavřená v závorkách ( [ ] ) se dá použít k porovnávání libovolného jednotlivého znaku v string a může obsahovat skoro jakýkoli kód znaku, včetně číslic.

Vykřičník ( ! ) na začátku charlist znamená, že je provedena shoda, pokud libovolný znak kromě znaků v charlist je nalezen v string . Při použití mimo hranaté závorky se vykřičník shoduje.

Speciální znaky

Chcete-li najít shodu se speciálními znaky, levou hranatou závorku ( [ ), otazníkem ( ? ), číslem znaménkem ( # ) a hvězdičkou ( * ), vložte je do závorek. Pravou hranatou závorku ( ] ) nelze použít v rámci skupiny, aby se shodovala se sebou, ale lze ji použít mimo skupinu jako jednotlivý znak.

Sekvence znaků [] je považována za řetězec s nulovou délkou ( "" ). Nemůže však být součástí seznamu znaků uzavřený v závorkách. Pokud chcete zjistit, zda pozice v umístění string obsahuje jednu ze skupin znaků nebo žádný znak vůbec, můžete použít Like dvakrát. Příklad naleznete v tématu How to: Match String to a vzor.

Rozsahy znaků

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

Když zadáte rozsah znaků, musí být ve vzestupném pořadí řazení, tj. od nejnižší po nejvyšší. Proto [A–Z] je platný vzor, ale není [Z–A] .

Více rozsahů znaků

Chcete-li zadat více rozsahů pro stejné umístění znaků, vložte je do stejné hranaté závorky bez oddělovačů. Výsledkem je například [A–CX–Z] shoda, pokud odpovídající pozice znaku v string části obsahuje libovolný znak v rámci rozsahu A C nebo rozsahu XZ .

Použití pomlčky

Spojovník ( ) se může objevit buď na začátku (za vykřičníkem, pokud existuje), nebo na konci charlist pro vyhledání sebe sama. V jakémkoli jiném umístění pomlčka identifikuje rozsah znaků oddělených znaky na obou stranách pomlčky.

Sekvence řazení

Význam zadaného rozsahu závisí na řazení znaků v době běhu, podle určení Option Compare a nastavení národního prostředí systému, na kterém je spuštěný kód. S Option Compare Binary , rozsah [A–E] odpovídá,,, A B C D a E . With Option Compare Text , [A–E] Matches,, A a À , à , B , b , C , c , D , d , a E e . Rozsah neodpovídá Ê nebo ê vzhledem k tomu, že znaky zvýrazněné v pořadí řazení jsou vyrovnávány po nezvýrazněných znacích.

Znaky grafu

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 když se zobrazí společně. LikeOperátor rozpozná, že jediný znak v grafu a dva jednotlivé znaky jsou ekvivalentní.

Pokud je v nastavení národního prostředí systému určen jazyk, který používá znak rozgrafu, je výskyt jednoho znaku grafu v buď pattern nebo string stejný jako ekvivalentní sekvence dvou znaků v druhém řetězci. Podobně znak v grafu pattern uzavřený v závorkách (sám o sobě, v seznamu nebo v rozsahu) odpovídá ekvivalentní posloupnosti dvou znaků v string .

Přetížení

LikeOperátor může být přetížen, což znamená, že třída nebo struktura může předefinovat své chování, pokud má operand typ této třídy nebo struktury. Pokud váš kód používá tento operátor na takové třídě nebo struktuře, ujistěte se, že rozumíte jeho předefinovanému chování. Další informace naleznete v tématu procedury operátorů.

Příklad

Tento příklad používá Like operátor k porovnání řetězců s různými vzory. Výsledky se přejdou do Boolean proměnné, která označuje, jestli každý řetězec vyhovuje vzoru.

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é