Like Operátor (Visual Basic)

Egy sztringet hasonlít össze egy mintával.

Fontos

Az Like operátor jelenleg nem támogatott a .NET Core és a .NET Standard projektekben.

Syntax

result = string Like pattern  

Részek

result
Szükséges. Bármely Boolean változó. Az eredmény egy Boolean érték, amely azt jelzi, hogy az string adott érték megfelel-e a pattern.

string
Szükséges. Bármilyen String kifejezés.

pattern
Szükséges. Bármely String kifejezés, amely megfelel a "Megjegyzések" szakaszban leírt mintaegyeztetési konvencióknak.

Megjegyzések

Ha a benne lévő string érték megfelel a benne foglalt mintánakpattern, result akkor az .True Ha a sztring nem felel meg a mintának, result akkor a következő False: . Ha mindkettő stringpattern üres sztring, az eredmény az True.

Összehasonlító módszer

Az operátor viselkedése az LikeOption Compare Utasítástól függ. Az egyes forrásfájlok alapértelmezett sztring-összehasonlító metódusa a következő Option Compare Binary.

Mintabeállítások

A beépített mintaegyeztetés sokoldalú eszközt biztosít a sztringek összehasonlításához. A mintamegfeleltetési funkciók lehetővé teszik, hogy az egyes karaktereket string egy adott karakterhez, helyettesítő karakterhez, karakterlistához vagy karaktertartományhoz hasonlítsa. Az alábbi táblázat az engedélyezett pattern karaktereket és azok egyezését mutatja.

Karakterek a következőben: pattern Egyezések a következőben: string
? Bármely egyetlen karakter
* Nulla vagy több karakter
# Bármely egy számjegy (0–9)
[charlist] Bármely karakter a következőben: charlist
[!charlist] Minden olyan karakter, amely nem szerepel a charlist

Karakterlisták

A szögletes zárójelben[ ] (charlist) egy vagy több karakterből álló csoport bármely karakterhez string használható, és szinte bármilyen karakterkódot tartalmazhat, beleértve a számjegyeket is.

A felkiáltójel (!) az elején charlist azt jelenti, hogy egyezés akkor jön létre, ha a karakterek kivételével bármely karakter megtalálható a fájlban charliststring. Külső zárójelek használata esetén a felkiáltójel önmagával egyezik.

Speciális karakterek

A speciális karakterek bal oldali szögletes zárójelének (), kérdőjelének ([?), számjelének (#) és csillagának (*) egyezéséhez szögletes zárójelekbe foglalja őket. A jobb oldali szögletes zárójel (]) nem használható a csoporton belül önmagához való igazodáshoz, de a csoporton kívül is használható egyéni karakterként.

A karaktersorozat [] nulla hosszúságú sztringnek ("") minősül. Ez azonban nem lehet a zárójelek közé zárt karakterlista része. Ha ellenőrizni szeretné, hogy egy pozíció string tartalmaz-e egy karaktercsoportot, vagy egyáltalán nincs karakter, használhatja Like kétszer. Példa: Sztring egyeztetése mintával.

Karaktertartományok

A tartomány charlist alsó és felső határának elválasztásához kötőjel () használatával megadhat egy karaktertartományt. Egyezést eredményez például, [A–Z] ha a megfelelő karakterpozíció string a tartományon Abelül bármilyen karaktert tartalmaz –Z és [!H–L] egyezést eredményez, ha a megfelelő karakter pozíciója a tartományon Hkívüli karaktereket tartalmaz –L.

Ha egy karaktertartományt ad meg, a karaktereknek növekvő rendezési sorrendben kell megjelenniük, azaz a legalacsonyabbtól a legmagasabbig. Így érvényes minta, [A–Z] de [Z–A] nem.

Több karaktertartomány

Ha több tartományt szeretne megadni ugyanahhoz a karakterhelyzethez, helyezze őket ugyanabban a szögletes zárójelben elválasztójelek nélkül. Egyezést eredményez például, [A–CX–Z] ha a megfelelő karakterpozíció string a tartományban – vagy a tartományban AXCZ belül tartalmaz bármilyen karaktert.

A kötőjel használata

A kötőjel () megjelenhet az elején (felkiáltójel után, ha van ilyen), vagy a végén charlist , hogy megfeleljen magának. Bármely más helyen a kötőjel a kötőjel mindkét oldalán lévő karakterek által elválasztott karaktertartományt azonosítja.

Rendezési sorrend

A megadott tartomány jelentése a futtatáskor történő karakterrendezéstől függ, amelyet a kód által Option Compare meghatározott rendszer területi beállítása határoz meg. A Option Compare Binarywith , a range [A–E] egyezik A, B, C, Dés E. A következőkkel: , egyezések A, a, Àà, B, b, , CEDcd, és .e[A–E]Option Compare Text A tartomány nem egyezik, Ê vagy ê mert az ékezetes karakterek rendezési sorrendben rendezetlen karakterek után rendeznek.

Digraph karakterek

Egyes nyelvekben vannak betűrendes karakterek, amelyek két különálló karaktert jelölnek. Több nyelv például a karaktert æ használja a karakterek a megjelenítésére és e azok együttes megjelenítésére. Az Like operátor felismeri, hogy az egyetlen digráfjel és a két egyéni karakter egyenértékű.

Ha a rendszer területi beállításaiban meg van adva egy digráfjelet használó nyelv, az egyetlen digraph karakter előfordulása vagy patternstring megegyezik a másik sztring azonos két karakterből álló sorozatával. Hasonlóképpen, a szögletes zárójelekben (önmagában pattern , egy listában vagy egy tartományban) lévő digráfjel megegyezik a megfelelő kétkarakteres sorozattal string.

Túlterhelés

Az Like operátor túlterhelhető, ami azt jelenti, hogy egy osztály vagy struktúra újradefiniálta a viselkedését, ha egy operandus az adott osztály vagy struktúra típusával rendelkezik. Ha a kód egy ilyen osztályon vagy struktúrán használja ezt az operátort, győződjön meg arról, hogy tisztában van az újradefiniált viselkedésével. További információ: Operátori eljárások.

Példa

Ez a példa az operátor használatával hasonlítja össze a Like sztringeket a különböző mintákkal. Az eredmények egy Boolean változóba kerülnek, amely azt jelzi, hogy minden sztring megfelel-e a mintának.

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

Lásd még