Оператор Like (Visual Basic)

Обновлен: Ноябрь 2007

Сравнивает строку c шаблоном.

result = string Like pattern

Компоненты

  • result
    Обязательный параметр. Любая переменная Boolean. В результате получается значение Boolean, показывающее, удовлетворяет ли stringpattern.

  • 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] приводит к совпадению, если соответствующая позиция символа в string содержит любой знак в пределах диапазона A–C или диапазона X–Z.

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

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

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

Значение указанного диапазона зависит от порядка знаков во время выполнения, определенного с помощью OptionCompare и локальных параметров системы, в которой выполняется код. При OptionCompareBinary, диапазон [A–E] совпадает с A, B, C, D, и E. При OptionCompareText, [A–E] совпадает с A, a, А, а, B, b, C, c, D, d, E, и e. Диапазон не соответствует К или к, так как диакритические знаки сортируются после стандартных в порядке сортировки.

Знаки диграфы

В некоторых языках существуют символы алфавита, представляющие собой два отдельных знака. Например, в некоторых языках знак ж используется для представления знаков a и e, стоящих рядом. Оператор Like распознает, что один диграф и два отдельных знака эквивалентны.

Если язык, в котором есть диграфы, указан в региональных параметрах системы, то при наличии одного диграфа либо в pattern, либо в string, он будет сопоставлен с эквивалентной двузначной последовательностью в другой строке. Аналогично диграф в pattern, заключенный в квадратные скобки (отдельно, в списке или в диапазоне), соответствует равнозначной последовательности двух знаков в string.

Перегрузка

Оператор Like может быть перегружен. Это означает, что класс или структура может переопределить его поведение, если операнд имеет тип соответствующего класса или структуры. Если в коде используется этот оператор для такого класса или структуры, убедитесь, что его переопределенное поведение вам понятно. Дополнительные сведения см. в разделе Процедуры операторов.

Пример

В этом примере оператор 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*"

См. также

Задачи

Практическое руководство. Сравнение строки на соответствие с шаблоном

Основные понятия

Операторы и выражения в Visual Basic

Ссылки

Операторы сравнения (Visual Basic)

Функция InStr (Visual Basic)

Порядок применения операторов в Visual Basic

Список операторов, сгруппированных по функциональному назначению

Оператор Option Compare

Функция StrComp (Visual Basic)