Студопедия

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

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

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






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






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

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

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

    Обычные операции сравнения применимы и к строковым данным. Интерпретация этих операций зависит от установки опции 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.