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 A – Z a výsledkem je shoda, [!H–L] Pokud odpovídající pozice znaku obsahuje libovolný znak mimo rozsah H – L .
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 X – Z .
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*"