Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Porównuje ciąg ze wzorcem.
Ważne
Operator Like
nie jest obecnie obsługiwany w projektach .NET Core i .NET Standard.
Składnia
result = string Like pattern
generatora
result
Wymagany. Dowolna Boolean
zmienna. Wynik jest wartością wskazującą Boolean
, czy string
element spełnia wartość pattern
.
string
Wymagany. Dowolne String
wyrażenie.
pattern
Wymagany. Dowolne String
wyrażenie zgodne z konwencjami dopasowywania wzorców opisanymi w sekcji "Uwagi".
Uwagi
Jeśli wartość w string
elemecie spełnia wzorzec zawarty w pattern
elemecie , result
to True
. Jeśli ciąg nie spełnia wzorca, result
to .False
Jeśli ciągi i string
pattern
są puste, wynikiem jest True
.
Metoda porównania
Zachowanie Like
operatora zależy od instrukcji Porównanie opcji. Domyślną metodą porównania ciągów dla każdego pliku źródłowego jest Option Compare Binary
.
Opcje wzorca
Dopasowanie wbudowanego wzorca zapewnia uniwersalne narzędzie do porównywania ciągów. Funkcje dopasowywania wzorca umożliwiają dopasowanie każdego znaku do string
określonego znaku, symbolu wieloznakowego, listy znaków lub zakresu znaków. W poniższej tabeli przedstawiono dozwolone pattern
znaki i ich dopasowanie.
Znaki w pattern |
Dopasowania w string |
---|---|
? |
Dowolny pojedynczy znak |
* |
Zero lub więcej znaków |
# |
Dowolna pojedyncza cyfra (0–9) |
[charlist] |
Dowolny pojedynczy znak w charlist |
[!charlist] |
Dowolny pojedynczy znak nie jest w charlist |
Listy znaków
Grupę co najmniej jednego znaku () ujętego w nawiasy kwadratowe (charlist
[ ]
) można użyć do dopasowania dowolnego pojedynczego znaku i może zawierać niemal dowolny kod znaku, w string
tym cyfry.
Wykrzyknik (!
) na początku charlist
oznacza, że dopasowanie jest wykonywane, jeśli w obiekcie znajduje się dowolny znak z wyjątkiem znaków w charlist
string
. W przypadku użycia nawiasów zewnętrznych wykrzyknik pasuje do samego siebie.
Znaki specjalne
Aby dopasować znaki specjalne w lewym nawiasie kwadratowym (), znak zapytania ([
?
), znak numeru (#
) i gwiazdkę (*
), należy je ująć w nawiasy kwadratowe. Prawy nawias kwadratowy (]
) nie może być używany w grupie, aby dopasować się do siebie, ale może być używany poza grupą jako pojedynczy znak.
Sekwencja []
znaków jest traktowana jako ciąg o zerowej długości (""
). Nie może być jednak częścią listy znaków ujętej w nawiasy. Jeśli chcesz sprawdzić, czy pozycja w string
obiekcie zawiera jedną z grup znaków, czy w ogóle nie ma znaku, możesz użyć Like
dwukrotnie. Aby zapoznać się z przykładem, zobacz How to: Match a String against a Pattern (Jak dopasować ciąg do wzorca).
Zakresy znaków
Używając łącznika (–
), aby oddzielić dolne i górne granice zakresu, charlist
można określić zakres znaków. Na przykład powoduje dopasowanie, [A–Z]
jeśli odpowiednia pozycja znaku w string
obiekcie zawiera dowolny znak w zakresie A
—Z
i [!H–L]
powoduje dopasowanie, jeśli odpowiednia pozycja znaku zawiera dowolny znak poza zakresem H
–L
.
Po określeniu zakresu znaków muszą one być wyświetlane w kolejności rosnącej sortowania, czyli od najniższej do najwyższej. [A–Z]
W związku z tym jest prawidłowym wzorcem, ale [Z–A]
nie jest.
Wiele zakresów znaków
Aby określić wiele zakresów dla tej samej pozycji znaku, umieść je w tych samych nawiasach bez ograniczników. Na przykład powoduje dopasowanie, [A–CX–Z]
jeśli odpowiednia pozycja znaku w string
obiekcie zawiera dowolny znak w zakresie A
—C
lub zakres X
—Z
.
Użycie łącznika
Łącznik (–
) może pojawić się na początku (po wykrzykniku, jeśli istnieje) lub na końcu charlist
dopasowania. W dowolnej innej lokalizacji łącznik identyfikuje zakres znaków rozdzielonych znakami po obu stronach łącznika.
Sekwencja sortowania
Znaczenie określonego zakresu zależy od kolejności znaków w czasie wykonywania, zgodnie z ustawieniem Option Compare
ustawień regionalnych systemu, na którym działa kod. Za pomocą parametru zakres jest zgodny z elementami Option Compare Binary
, , B
C
, D
i E
.A
[A–E]
Z Option Compare Text
, [A–E]
pasuje A
do , À
à
b
C
B
a
D
d
c
E
i .e
Zakres nie jest zgodny Ê
lub ê
ponieważ znaki wyróżniające są sortowane po nieoznakowanych znakach w kolejności sortowania.
Znaki digrafu
W niektórych językach istnieją znaki alfabetyczne, które reprezentują dwa oddzielne znaki. Na przykład kilka języków używa znaku æ
do reprezentowania znaków a
i e
ich wyświetlania razem. Operator Like
rozpoznaje, że pojedynczy znak digrafu i dwa pojedyncze znaki są równoważne.
Gdy język używający znaku digrafu jest określony w ustawieniach regionalnych systemu, wystąpienie pojedynczego znaku digrafu w elemencie pattern
lub string
pasuje do równoważnej sekwencji dwóch znaków w drugim ciągu. Podobnie znak digrafu w pattern
nawiasach kwadratowych (samodzielnie, na liście lub w zakresie) pasuje do równoważnej sekwencji dwuznakowej w elemencie string
.
Przeciążenie
Operator Like
może być przeciążony, co oznacza, że klasa lub struktura może ponownie zdefiniować jego zachowanie, gdy operand ma typ tej klasy lub struktury. Jeśli kod używa tego operatora w takiej klasie lub strukturze, upewnij się, że rozumiesz jego ponownie zdefiniowane zachowanie. Aby uzyskać więcej informacji, zobacz Procedury operatorów.
Przykład
W tym przykładzie użyto Like
operatora do porównywania ciągów z różnymi wzorcami. Wyniki przechodzą do zmiennej wskazującej Boolean
, czy każdy ciąg spełnia wzorzec.
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*"