Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 3. Основні елементи мови Caché Object Script-рус.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
55.42 Кб
Скачать

Оператор проверки по шаблону

Символ оператора проверки по шаблону — это вопросительный знак.

Левый операнд — это строка символов, подлежащая исследованию.

Правый операнд — это так называемый «шаблон», состоящий из числа и одного или нескольких символов класса.

Результатом проверки по шаблону является ИСТИНА, если операнд точно соответствует образцу, в противном случае — 0. В качестве вводного примера приведем число 348, состоящее из 3 цифр. Тогда результатом проверки по шаблону «348 ? 3N» (348 соответствует образцу «три цифры») будет ИСТИНА.

Основу проверки по шаблону составляет лежащий в основе Cache набор символов, подразделяемый на отдельные классы символов. Cache поддерживает целый ряд различных (а благодаря наличию утилиты поддержки национальных языков cnls.exe также и национальных) наборов символов. Основной принцип проверки по шаблону легко объясним на примере 7-битного набора символов ASCII, причем при распространении на другие классы символов необходимо всегда задаваться вопросом, какому классу символов принадлежит заданный символ.

При этом класс управляющих символов определяется как класс, состоящий из символов ASCII с кодами 0-31, а также 127. Точно также выделяются знаки препинания, цифры и алфавитные символы. Каждый из этих классов получает краткое наименование.

Таблица 2. Классы символов и их значение при проверке по шаблону.

Класс символов

Наименование

Коды ASCII

Пример

С

Управляющие символы

0-31, 127

$с(7) - Веер

P

Знаки препинания

32-47

!, $, %, &, /

N

Цифры

48-57

5

U

Прописные буквы

65-90

A-Z

L

Строчные буквы

92-122

a-z

А

Алфавитные символы

65-90, 92-122

A-Z, a-z

Е

Все символы

0-127

Две последние группы не являются собственными классами символов, а объединяют другие классы. При проверке по шаблону определяется, в какой класс символов попадает каждый символ строки символов. Шаблон при этом построен по простому принципу: он состоит из последовательности элементов шаблона, соединенных друг с другом без знаков переноса. Каждый из элементов шаблона состоит из части, задающей фактор повторения, и части, указывающей, с каким классом символов производится сравнение.

В качестве примера приведем дату в форме дд.мм.гггг (скажем, 29.11.1999), находящуюся в переменной date. Следующая строка кода может служить проверкой ввода даты:

If date ? 2N1P2N1P4N Write "Ввод даты верный "

При этом проверяется соответствие содержимое переменной date шаблону 2N1P2N1P4N. Последний состоит из 5 элементов шаблона, а именно, 2N, 1P, 2N, 1P, 4N. Каждый из элементов шаблона состоит из фактора повторения и класса символов. Элементу шаблона 2N соответствуют ровно две идущих друг за другом цифры, в то время как 1P определяет ровно один знак препинания. Результатом проверки по шаблону является логическое значение, всегда равное 1, если переменная соответствует шаблону, и 0, если это не так.

Введенная дата 310.5.1999 признается в данном случае неверной, так как эта строка символов начинается 3 цифрами, таким образом, третий символ не является знаком препинания, как того требует шаблон.

Вместо общепризнанных знаков препинания может быть точно задан конкретный символ, который необходимо иметь в дате. Чтобы, например, в определенном месте была именно точка, достаточен элемент шаблона 1".", и шаблон для даты можно сформулировать точнее: 2N1"."2N1"."4N.

Кроме того, существует возможность задавать минимально и/или максимально возможное число символов класса. Таблица 3 содержит все допустимые форматы.

Таблица 3. Форматы факторов повторения.

Фактор повторения

Значение

<Number>

Шаблон должен появляться точно <Number> раз.

<Number1>.<Number2>

Шаблон должен встречаться как минимум <Number1> раз, однако не более чем <Number2> раз.

<Number>.

Шаблон должен появляться как минимум <Number> раз.

. <Number>

Шаблон может появляться самое большее <Number> раз.

.

Шаблон может появляться сколь угодно часто (или же совсем не появляться).

Вместо того чтобы проверять, соответствует ли строка символов шаблону, часто совершают обратное: смотрят, имеется ли несоответствие строки символов заданному шаблону. Тогда можно вывести сообщение об ошибке и вновь потребовать ввода этой строки символов.

Следующие примеры показывают типичные случаи применения проверки по шаблону:

  • Строка символов, начинающаяся с прописной буквы, далее на выбор буквы или знаки препинания:

1U.AP

  • Номер транспортного средства, напр. DA-DM 733:

1.3U1"-"1.2U1" "1.4N

  • Наличие управляющего символа в строке символов:

.Е1С.Е

Наконец, в виде примера введем уточнение, а именно концепцию альтернативного шаблона. При этом в скобках с разделением запятой задаются альтернативные формы шаблонов, которые следует использовать.

Данная форма применения проверки по шаблону может быть с успехом продемонстрирована на примере проверки даты, если следующие форматы даты рассматриваются как допустимые:

  • Разделителем является точка: 29.11.1999

  • Разделителем является косая черта: 29/11/1999

  • Разделителем является дефис: 29-11-1999

При этом смешанная форма записи, а также другие разделители не разрешены. Нетрудно заметить, что первые две и последние четыре цифры одинаковы, а между ними находится альтернативная часть. Следовательно, для этого шаблона записывают:

1.2N1(1"."1.2N1".",1"/"1.2N1"/",1"-"1.2N1"-")4N

При этом идущие друг за другом в скобках шаблоны соответствуют ситуации ИЛИ: должен задаваться либо первый, либо второй, либо третий шаблон. С другими подробностями этого весьма эффективного варианта проверки по шаблону можно ознакомиться в документации по Cache.