Оператор 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 содержит какой-либо символ в диапазоне AZ, и [!H–L] приводит к совпадению, если соответствующая позиция символа содержит любой символ за пределами диапазона HL.

При указании диапазона символов они должны отображаться в порядке сортировки по возрастанию, то есть от наименьшего к верхнему. Таким образом, [A–Z] является допустимым шаблоном, но [Z–A] не является.

Несколько диапазонов символов

Чтобы указать несколько диапазонов для одной позиции символов, поместите их в одни и те же скобки без разделителей. Например, приводит к совпадению, [A–CX–Z] если соответствующая позиция символа в string содержит какой-либо символ в диапазоне AC или диапазоне XZ .

Использование дефиса

Дефис () может отображаться либо в начале (после восклицательного знака, если таковой имеется), либо в конце 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*"

См. также раздел