Оператор Like (Visual Basic)
Сравнивает строку с шаблоном.
Важно!
Оператор Like
в настоящее время не поддерживается в проектах .NET Core и .NET Standard.
Синтаксис
result = string Like pattern
Компоненты
result
Обязательный. Любая Boolean
переменная. Результатом является значение, Boolean
указывающее, удовлетворяет pattern
ли string
объект .
string
Обязательный. Произвольное выражение String
.
pattern
Обязательный. Любое String
выражение, соответствующее соглашениям о сопоставлении шаблонов, описанным в разделе "Примечания".
Комментарии
Если значение в string
соответствует шаблону, содержаму в pattern
, result
имеет значение True
. Если строка не соответствует шаблону, result
имеет значение False
. Если и string
являются pattern
пустыми строками, результатом будет True
.
Метод сравнения
Поведение Like
оператора зависит от оператора Option Compare. Метод сравнения строк по умолчанию для каждого исходного файла — Option Compare Binary
.
Параметры шаблона
Встроенное сопоставление шаблонов предоставляет универсальный инструмент для сравнения строк. Функции сопоставления шаблонов позволяют сопоставлять каждый символ в string
с определенным символом, подстановочным знаком, списком символов или диапазоном символов. В следующей таблице показаны допустимые символы и pattern
их соответствие.
Символы в pattern |
Совпадения в string |
---|---|
? |
Любой отдельный символ |
* |
Ноль или более символов |
# |
Любая однозначная цифра (0–9) |
[charlist] |
Любой отдельный символ в charlist |
[!charlist] |
Любой отдельный символ, не в charlist |
Списки символов
Группа из одного или нескольких символов (charlist
), заключенная в квадратные скобки ([ ]
), может использоваться для сопоставления с любым одним символом в string
и может содержать практически любой код символов, включая цифры.
Восклицательный знак (!
) в начале charlist
означает, что совпадение выполняется, если в string
найден какой-либо символ, кроме символов в charlist
. При использовании за квадратными скобками восклицательный знак совпадает с самим собой.
Специальные символы
Чтобы сопоставить специальные символы с левой скобкой ([
), вопросительным знаком (?
), цифрой (#
) и звездочкой (*
), заключите их в квадратные скобки. Правая скобка (]
) не может использоваться в группе для сопоставления с самой собой, но ее можно использовать за пределами группы в качестве отдельного символа.
Последовательность []
символов считается строкой нулевой длины (""
). Однако он не может быть частью списка символов, заключенного в квадратные скобки. Если вы хотите проверка, содержит ли позиция в string
один из группы символов или вообще не содержит символов, можно использовать Like
два раза. Пример см. в разделе Практическое руководство. Сопоставление строки с шаблоном.
Диапазоны символов
Используя дефис (–
) для разделения нижней и верхней границ диапазона, charlist
можно указать диапазон символов. Например, приводит к совпадению, [A–Z]
если соответствующая позиция символа в string
содержит какой-либо символ в диапазоне A
–Z
, и [!H–L]
приводит к совпадению, если соответствующая позиция символа содержит любой символ за пределами диапазона H
–L
.
При указании диапазона символов они должны отображаться в порядке сортировки по возрастанию, то есть от наименьшего к верхнему. Таким образом, [A–Z]
является допустимым шаблоном, но [Z–A]
не является.
Несколько диапазонов символов
Чтобы указать несколько диапазонов для одной позиции символов, поместите их в одни и те же скобки без разделителей. Например, приводит к совпадению, [A–CX–Z]
если соответствующая позиция символа в string
содержит какой-либо символ в диапазоне A
—C
или диапазоне X
—Z
.
Использование дефиса
Дефис (–
) может отображаться либо в начале (после восклицательного знака, если таковой имеется), либо в конце charlist
для сопоставления с самим собой. В любом другом месте дефис определяет диапазон символов, разделенных символами с обеих сторон дефиса.
Последовательность сортировки
Значение указанного диапазона зависит от порядка символов во время выполнения, определяемого параметром Option Compare
и языковым стандартом системы, в котором выполняется код. При Option Compare Binary
использовании диапазон [A–E]
соответствует A
, B
, C
, D
и E
. С Option Compare Text
параметром соответствует [A–E]
A
, a
, À
, à
, B
, b
, C
, , c
, D
, d
, E
и e
. Диапазон не соответствует Ê
или ê
потому, что знаки с диакритических знаков сортируются после символов без раскадрировки в порядке сортировки.
Символы диграфа
В некоторых языках существуют буквенные символы, представляющие два отдельных символа. Например, в нескольких языках символ æ
используется для представления символов a
и e
их появления вместе. Оператор Like
распознает, что один символ диграфа и два отдельных символа эквивалентны.
Если язык, использующий символ диграфа, указан в параметрах системного языкового стандарта, вхождение одного символа диграфа в любом из двух pattern
символов или string
соответствует эквивалентной двухсимвной последовательности в другой строке. Аналогичным образом, символ диграфа, заключенный в pattern
квадратные скобки (сам по себе, в списке или диапазоне), соответствует эквивалентной двухзначной последовательности в string
.
Перегрузка
Оператор Like
может быть перегружен, что означает, что класс или структура могут переопределить свое поведение, если операнд имеет тип этого класса или структуры. Если код использует этот оператор для такого класса или структуры, убедитесь, что вы понимаете его переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.
Пример
В этом примере оператор используется для Like
сравнения строк с различными шаблонами. Результаты переходят в переменную Boolean
, указывающую, соответствует ли каждая строка шаблону.
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*"