Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сравнение с образцом






Работа со строками

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

Сравнение строк

Обычные операции сравнения применимы и к строковым данным. Интерпретация этих операций зависит от установки опции Option Compare.

· Если эта опция установлена как Text, то сравнение на «больше – меньше» представляет лексикографическое сравнение, когда строки сравниваются по их расположению в словаре. Это сравнение не чувствительно к регистру, так что большие и малые буквы не различаются. Сравнение строк означает сравнение кодов их символов, так что лексикографический порядок определяется кодировкой символов алфавита.

· Если эта опция установлена как Binary, то сравнение идет побитно. В этом случае сравнение чувствительно к регистру.

Если нужно локально переопределить вид сравнения, заданный опцией для всего модуля, то можно использовать встроенную функцию StrComp, которая возвращает результат сравнения строк.

Ее синтаксис:

StrComp(string1, string2[, compare])

Аргументы string1 и string2 - сравниваемые строки. Необязательный аргумент compare указывает способ сравнения строк: значение по умолчанию 0 используется, чтобы выполнить двоичное сравнение, 1 задает посимвольное сравнение без учета регистра.

Если string1 меньше чем string2, то результат равен -1, если строки равны, то - 0, если вторая меньше, то - 1, если хоть одна из строк имеет значение Null, то результат также равен Null.

Сравнение с образцом

Полезным средством при работе с текстами является операция Like, задающая сравнение с образцом. Необходимость нахождения в наборе всех строк, удовлетворяющих некоторому шаблону (образцу), возникает в разных задачах. VBA позволяет решать ее в одну операцию. Приведем таблицу специальных символов, допустимых при задании образца.

Таблица 1. Специальные символы, используемые при задании шаблона
Символы Интерпретация Примеры
* Любой текст - произвольное число символов Шаблону Agent* соответствуют все тексты, начинающиеся со слова Agent. Строки Agent007 и Agent Майор Пронин удовлетворяют шаблону.
? Один любой символ Шаблону К? к удовлетворяют, в частности строки Кок и Кук.
# Любая цифра от 0 до 9 Шаблону Agent### соответствуют 1000 различных строк, среди которых и Agent007, но, конечно же, не Agent Майор Пронин.
[множество_символов] Любой символ, принадлежащий множеству Задать множество можно с помощью перечисления и интервалов. Шаблону К[аоу]к удовлетворяют слова " Как", " Кок", " Кук". Чувствительность к регистру зависит от установки опции Option Compare.
[! множество_символов] Любой не принадлежащий множеству символ Шаблону [! а-я] удовлетворяет символ, не являющийся буквой русского алфавита.

Приведем пример работы с операцией Like:

Public Sub LikeOperation()

Const pat1 = " [A-Z]"

Const pat2 = " [a-z]"

Const pat3 = " [! a-z]"

Const pat4 = " [3-5]"

Dim res As Byte

Dim Sym As String

 

res = " Кук" Like " К[аоу]к"

Debug.Print res

 

res = " f" Like pat1

Debug.Print res

res = " f" Like pat2

Debug.Print res

res = " f" Like pat3

Debug.Print res

 

res = " 5" Like pat4

Debug.Print res

Sym = " 3"

res = Sym Like pat1 & pat4

Debug.Print res

res = Sym Like pat1 Or Sym Like pat4

Debug.Print res

 

End Sub

 

Результаты отладочной печати:

В двух последних результатах, демонстрируются некорректный и корректный способы работы с объединением множеств проверяемых символов.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.