Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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
Części
result
To jest wymagane. Dowolna Boolean zmienna. Wynik jest wartością wskazującą Boolean , czy string element spełnia wartość pattern.
string
To jest wymagane. Dowolne String wyrażenie.
pattern
To jest wymagane. 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 patternelemecie , result to True. Jeśli ciąg nie spełnia wzorca, result to .False Jeśli ciągi i stringpattern 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 charliststring. 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, , BC, Di E.A[A–E] Z Option Compare Text, [A–E] pasuje Ado , ÀàbCBaDdcEi .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*"