Используется для сравнения двух строковых выражений.
результат = строка Like образец
Параметры
результат
Обязательный; любая числовая
переменная.
строка
Обязательный; любое строковое выражение.
образец
Обязательный; любое строковое выражение, удовлетворяющее
описанным ниже соглашениям о сравнениях строк с образцом.
Замечания
Если значение переменной строка соответствует значению
переменной образец, результат имеет значение True; при их несоответствии
результат имеет значение False. Если любой из операндов, строка или
образец, имеет значение Null, результат также имеет значение
Null.
Характеристики оператора Like определяются настройкой,
задаваемой в инструкции Option Compare. Если не указано другое, то
стандартный способ сравнения строк в каждом модуле задается инструкцией
Option Compare Binary.
Инструкция Option Compare Binary
указывает способ сравнения строковых значений, основанный на порядке сортировки,
который определяется внутренним двоичным представлением символов. В Microsoft
Windows порядок сортировки определяется кодовой страницей. Ниже
демонстрируется типичный пример упорядочивания символов:
A < B < E < Z < a < b < e < z < А < К < Ш < а < к < ш
Инструкция Option Compare Text указывает способ сравнения строковых значений, основанный на порядке сортировки по алфавиту без учета регистра, который определяется национальной настройкой системы. Приведенная выше последовательность символов при сортировке с настройкой Option Compare Text будет упорядочиваться следующим образом:
(A=a) < (B=b) < (E=e) < (Z=z) < (А=а) < (К=к) < (Ш=ш)
Существуют встроенные средства сравнения строковых значений, допускающие использование в образце подстановочных знаков, списков символов и диапазонов символов. В следующей таблице перечислены специальные символы, используемые в переменной образец, и соответствующие им символы в переменной строка:
Специальные символы Совпадающие символы ? Любой одиночный символ. * Любое количество символов или отсутствие символа. # Любая одиночная цифра (0–9). [список] Любой одиночный символ, входящий в список. [!список] Любой одиночный символ, не входящий в список.
Любой одиночный символ в переменной строка может быть сравнен с группой из
одного или нескольких символов (список), заключенных в квадратные скобки ([ ]).
Такая группа может содержать символы практически с любыми кодами, включая
цифры.
Специальные символы левая квадратная скобка ([), вопросительный знак
(?), символ (#) и звездочка (*) сравниваются как обычные символы, только если
они заключены в квадратные скобки. Правая квадратная скобка (]) в группе всегда
рассматривается как специальный символ, но может сравниваться как обычный символ
вне группы.
В дополнение к простому списку символов в квадратных скобках,
допускается указание в образце диапазона символов с помощью дефиса (–),
отделяющего нижнюю и верхнюю границы диапазона. Например, [A-Z] указывает, что
совпадающими будут считаться все символы верхнего регистра латинского алфавита,
находящиеся в нужной позиции в переменной строка. Допускается указание внутри
прямых скобок нескольких диапазонов без символов разделителей.
Конкретный вид
указанного диапазона определяется действующим во время выполнения способом
упорядочивания символов (который задается инструкцией Option Compare и
национальной настройкой системы). Если использовать приведенный выше пример в
режиме Option Compare Binary, то диапазону [A–E] соответствуют символы A,
B и E. В режиме Option Compare Text, образцу [A–E] соответствуют символы
A, a, А, а, B, b, E, e. Отметим, что в это диапазон не попадают символы К
или к, поскольку все символы русского алфавита размещаются в порядке сортировки
после стандартных символов латинского алфавита.
Существуют также следующие
правила, действующие при сравнении с образцом:
Восклицательный знак (!) в
начале перечня список указывает, что совпадающим с образцом считается любой
символ в соответствующей позиции в операнде строка, за исключением входящих в
список. Вне квадратных скобок восклицательный знак рассматривается как обычный
символ.
Дефис (–) в начале списка или сразу после восклицательного знака, а
также в конце списка рассматривается как обычный символ. В любой другой позиции
внутри квадратных скобок он рассматривается как определение
диапазона.
Определять диапазон необходимо в порядке возрастания. [A-Z]
является допустимым определением диапазона, а [Z-A] недопустимым.
Пустая пара
квадратных скобок [] игнорируется; она рассматривается как пустая строка
("").
В некоторых языках имеются специальные символы алфавита, представляющие
пару букв. Например, символ "ж" представляет стоящие рядом буквы "a" и "e".
Оператор Like распознает такой символ и соответствующую пару букв как
эквивалентные.
Если в системных национальной настройке указан язык, в котором
используются специальные символы, то включение такого символа и в переменную
образец, и в переменную строка приводит к тому, что эквивалентная пара в букв в
другом операнде рассматривается как совпадающая с этим символом. Аналогично, при
включении специального символа в образец внутри квадратных скобок (одного
символа или как часть определения списка или диапазона) он представляет
эквивалентную пару букв в операнде строка.
Пример
В данном примере демонстрируется использование оператора
Like для сравнения строкового значения с образцом.
Dim MyCheck MyCheck = "aBBBa" Like "a*a" ' Возвращает True. MyCheck = "F" Like "[A-Z]" ' Возвращает True. MyCheck = "F" Like "[!A-Z]" ' Возвращает False. MyCheck = "a2a" Like "a#a" ' Возвращает True. MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Возвращает True. MyCheck = "BAT123khg" Like "B?T*" ' Возвращает True. MyCheck = "CAT123khg" Like "B?T*" ' Возвращает False.