Поиск в строке миф
Для работы со строками существует большое количество функций (таблица. Функции работы со строками).
Таблица «Функции работы со строками»
Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды.
Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:
Следующие три функции позволяют работать с массивом строк
Эта функция имеет четыре аргумента:
Еще три функции обеспечивают преобразование строк:
И последние две функции генерируют строки символов
Пример
Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения:
1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка);
2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы;
3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).
Хороший фреймворк (framework) лучшее решение для безпроблемной работы со строками.
Технология выполнения
Форма примера в режиме конструктора и в рабочем состоянии
VBA Excel. Функция InStr (синтаксис, параметры, примеры)
Определение первого вхождения одной строки в другую с помощью функции InStr из кода VBA Excel. Синтаксис функции, параметры, примеры использования.
Описание функции InStr
Функция InStr ищет первое вхождение одной строки в другую с начала исходной строки. Для поиска первого совпадения с конца исходной строки используется функция InStrRev.
Функция InStr часто незаменима при определении параметров функций Left, Mid и Right. Также ее можно использовать для определения наличия искомой подстроки в заданной строке.
Еще есть в VBA Excel функция InStrB, которая работает с байтовыми данными, содержащимися в строке. Она возвращает позицию байта, а не символа первого вхождения одной строки в другую. Смотрите ниже Пример 3.
Синтаксис, параметры, значения
Синтаксис функции InStr
Чаще всего в VBA Excel используется сокращенный вариант функции со значениями необязательных параметров по умолчанию.
Параметры функции InStr
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
| start | Необязательный аргумент.* Числовое выражение, которое задает начальную позицию для поиска. | 1 |
| string1 | Обязательный аргумент. Строковое выражение, в котором выполняется поиск. | – |
| string2 | Обязательный аргумент. Искомое строковое выражение. | – |
| compare | Необязательный аргумент. Задает тип сравнения строк. | –1** |
* Если задан аргумент compare, аргумент start является обязательным.
** Если аргумент compare не указан, используется значение инструкции Option Compare, заданное на уровне модуля. Если инструкция Option Compare в начале модуля отсутствует, используется ее значение по умолчанию – 0 (двоичное сравнение).
Если параметр start или параметр compare содержит значение NULL, возникает ошибка.
Значения аргумента «compare»
| Константа | Значение | Описание |
|---|---|---|
| vbUseCompareOption | -1 | Сравнение с помощью параметра инструкции Option Compare. |
| vbBinaryCompare | 0 | Двоичное (бинарное) сравнение.* |
| vbTextCompare | 1 | Текстовое сравнение.* |
| vbDatabaseCompare | 2 | Сравнение на основе сведений из базы данных. Только для Microsoft Access. |
* При двоичном сравнении учитывается регистр букв, при текстовом – не учитывается.
Функция InStr
Возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
InStr([ начало ], строка1, строка2, [ сравнение ])
В синтаксисе функции InStr используются следующие аргументы:
| Часть | Описание |
|---|---|
| начало | Необязательно. Числовое выражение, которое задает начальную точку для поиска. Если этот аргумент опущен, поиск начинается с первого знака строки. Если аргумент начало содержит значение Null, возникает ошибка. Аргумент начало является обязательным, если задан аргумент сравнение. |
| строка1 | Обязательно. Строковое выражение, поиск в котором выполняется. |
| строка2 | Обязательно. Искомое строковое выражение. |
| сравнение | Необязательно. Определяет тип сравнения строк. Если аргумент сравнение содержит значение Null, возникает ошибка. Если аргумент сравнение опущен, тип сравнения определяется параметром Option Compare. Укажите допустимый LCID (код языка), чтобы использовать для сравнения правила, определяемые языковым стандартом. |
Параметры
Аргумент сравнение может принимать следующие значения:
| Константа | Значение | Описание |
|---|---|---|
| vbUseCompareOption | –1 | Выполняется сравнение с помощью параметра оператора Option Compare. |
| vbBinaryCompare | 0 | Выполняется двоичное сравнение. |
| vbTextCompare | 1 | Выполняется текстовое сравнение. |
| vbDatabaseCompare | 2 | Только Microsoft Access. Выполняется сравнение на основе сведений из базы данных. |
Возвращаемые значения
| Если | Возвращаемое значение |
|---|---|
| строка1 является пустой | 0 |
| строка1 равна Null | Null |
| строка2 является пустой | начало |
| строка2 равна Null | Null |
| строка2 не найдена | 0 |
| строка2 найдена в строке1 | Позиция найденного соответствия |
| начало > строка2 | 0 |
Примечания
Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.
Пример
В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Функция InStr
Возвращает значение типа Variant ( Long), определяющее положение первого вхождения одной строки в другую.
Функция InStr имеет следующие аргументы:
Необязательный аргумент. Числовое выражение, которое задает начальное положение для каждого поиска. Если аргумент не задан, поиск начинается с первого символа. Если аргумент начало содержит значение NULL, возникает ошибка. Если задан аргумент сравнение, аргумент начало является обязательным.
Обязательный аргумент. Представляет собой строковое выражение, в котором выполняется поиск.
Обязательный аргумент. Искомое строковое выражение.
Необязательный аргумент. Определяет тип сравнение строк. Если сравнение имеет null, возникает ошибка. Если этот параметр опущен, тип сравнения определяется параметром сравнения. Укажите допустимый LCID (LocaleID), который будет использовать в сравнении правила для конкретного локали.
Совет: В Access 2010 построитель выражений включает функцию IntelliSense, которая указывает требуемые аргументы.
Аргумент compare может принимать следующие значения.
Выполняется сравнение с помощью параметра инструкции Option Compare.
Выполняется двоичное сравнение.
Выполняется текстовое сравнение.
Только в Microsoft Office Access 2007. Выполняется сравнение на основе сведений из базы данных.
строка1 является пустой
строка1 равна NULL
строка2 является пустой
строка2 равна NULL
строка2 не найдена
строка2 найдена в строке1
Позиция найденного соответствия
Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.
Примеры
Функция InStr проверяет каждое значение в поле IPAddress и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.
Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:
В этом примере функция InStr(1,[IPAddress],».») возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left получает эти символы из левой части поля IPAddress, возвращая значение 10.
Использование функции InStr в коде VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.
VBA Excel. Работа с текстом (функции)
Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.
Функции для работы с текстом
Основные функции для работы с текстом в VBA Excel:
| Функция | Описание |
|---|---|
| Asc(строка) | Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/». |
| Chr(код символа) | Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/». |
| Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) | Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее… |
| InStr([начало], строка1, строка2, [сравнение]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее… |
| InstrRev(строка1, строка2, [начало, [сравнение]]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. |
| Join(SourceArray,[Delimiter]) | Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее… |
| LCase(строка) | Преобразует буквенные символы строки в нижний регистр. |
| Left(строка, длина) | Возвращает левую часть строки с заданным количеством символов. Подробнее… |
| Len(строка) | Возвращает число символов, содержащихся в строке. |
| LTrim(строка) | Возвращает строку без начальных пробелов (слева). Подробнее… |
| Mid(строка, начало, [длина]) | Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее… |
| Replace(expression, find, replace, [start], [count], [compare]) | Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее… |
| Right(строка, длина) | Возвращает правую часть строки с заданным количеством символов. Подробнее… |
| RTrim(строка) | Возвращает строку без конечных пробелов (справа). Подробнее… |
| Space(число) | Возвращает строку, состоящую из указанного числа пробелов. Подробнее… |
| Split(Expression,[Delimiter],[Limit],[Compare]) | Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее… |
| StrComp(строка1, строка2, [сравнение]) | Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее… |
| StrConv(string, conversion) | Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее… |
| String(число, символ) | Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее… |
| StrReverse(строка) | Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее… |
| Trim(строка) | Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее… |
| UCase(строка) | Преобразует буквенные символы строки в верхний регистр. |
| WorksheetFunction.Trim(строка) | Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы. |
В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.
Ключевые слова для работы с текстом
| Ключевое слово | Описание |
|---|---|
| & | Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String. |
| vbCrLf | Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2). |
| vbNewLine | Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2). |
Примеры
Вывод прямых парных кавычек
Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:
