Поделиться через


Оператор 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 означает, что совпадение выполняется, если какой-либо символ, кроме символов, charlist найденных в string. При использовании за пределами квадратных скобок восклицательный знак соответствует самому себе.

Специальные символы

Чтобы соответствовать специальным символам левую скобку ([), вопросительный знак (), знак номера (?#) и звездочку (*), заключите их в квадратные скобки. Правая скобка (]) не может использоваться внутри группы для сопоставления себя, но ее можно использовать вне группы в качестве отдельного символа.

Последовательность символов [] считается строкой нулевой длины (""). Однако она не может быть частью списка символов, заключенного в квадратные скобки. Если вы хотите проверка, содержит ли позиция string одну из групп символов или символов вообще, можно использовать Like дважды. Пример см. в разделе "Практическое руководство. Сопоставление строки с шаблоном".

Диапазоны символов

Используя дефис () для разделения нижних и верхних границ диапазона, charlist можно указать диапазон символов. Например, приводит к совпадению, [A–Z] если соответствующая позиция символа содержит string любой символ в диапазоне AиZ[!H–L] приводит к совпадению, если соответствующая позиция символа содержит любой символ за пределами диапазона H.L.

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

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

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

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

Дефис () может отображаться в начале (после восклицательного знака, если таковой charlist имеется) или в конце самого соответствия. В любом другом расположении дефис определяет диапазон символов, разделенных символами на обеих сторонах дефиса.

Сортировка последовательности

Значение указанного диапазона зависит от упорядочения символов во время выполнения, как определено Option Compare и языковым стандартом системы, на котором выполняется код. С Option Compare Binary, диапазон [A–E] совпадает A, B, Cи DE. СOption Compare Text, [A–E] совпадениямиaàBCbcDÀA, , dEи .e Диапазон не совпадает Ê или ê потому, что акцентированные символы сопоставляются после неподцененных символов в порядке сортировки.

Символы диграфа

На некоторых языках есть алфавитные символы, представляющие два отдельных символа. Например, несколько языков используют символ æ для представления символов и e при их отображении a вместе. Оператор 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*"

См. также