www.ПЕРВЫЕ ШАГИ.ru :: Шаг 89 - Оператор Like

VBA

Шаг 89 - Оператор Like

Используется для сравнения двух строковых выражений.

результат = строка 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.


Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.