Функция InStr

InStr([Start,]String1,String2[,Compare])
InStrB([Start,]String1,String2[,Compare])

Функция InStr(In String) служит для поиска номера символа(номера байта для InStrB), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы

Примечание

В функции InStr при очень длинных строках при текстовом методе сравнения, возможно возникновение ошибки времени исполнения Stack overflow. Избежать этой ошибки можно, переведя исходную строку и образец в один регистр и перейдя на бинарное сравнение

Возвращаемое значение

Возвращает значение типа Variant(Long), указывающее позицию первого появления одной строки внутри другой

Перечень возвращаемых значений
Вариант Значение, возвращаемое функцией InStr
String1 имеет нулевую длину 0
String1 имеет значение Null Null
String2 имеет нулевую длину Start
String2 имеет значение Null Null
String2 не найдена 0
String2 найдена внутри String1 Позиция, в которой обнаружено совпадение
Start > String2 0

Параметры
Элемент Описание
Start Необязательный. Числовое выражение, которое задает первую позицию для каждого поиска. Если параметр опущен, поиск начинается с позиции первого символа. В том случае, когда значение параметра Start равно Null, возникает ошибка. Параметр Start является обязательным, если задан параметр Compare
String1 Обязательный. Строковое выражение,в котором ведется поиск
String2 Обязательный. Отыскиваемое строковое выражение
Compare Необязательный. Задает тип сравнения для строк. Если значение параметра Compare равно Null, возникает ошибка. В том случае, когда параметр Compare опущен,тип сравнения определяется установками оператора Option Compare

Установки

Для параметра Compare используются следующие установки:
Константа Значение Описание
vbUseCompareOption -1 Сравнение выполняется с использованием установок для оператора Option Compare
vbBinaryCompare 0 Выполняется побитовое сравнение
vbTextCompare 1 Выполняется текстовое сравнение
vbDatabaseCompare 2 Только для Microsoft Access. Сравнение выполняется с применением сведений из базы данных пользователя

Пример

' В данном примере функция InStr
' возвращает позицию первого появления
' одной строки внутри другой строки
Dim SearchString, SearchChar, MyPos
SearchString ="Русский_Проект"   ' Исходная строка
SearchChar = "Р"   ' Следует найти "P"

' Посимвольное сравнение, начиная с позиции 4. Возвращает 10
MyPos = Instr(4, SearchString, SearchChar, vbTextCompare)   

' Двоичное сравнение, начиная с позиции 1. Возвращает 1
MyPos = Instr(1, SearchString, SearchChar, 0)

' Сравнение является двоичным по умолчанию (последний аргумент опущен)
MyPos = Instr(SearchString, SearchChar)   ' Возвращает 1

MyPos = Instr(1, SearchString, "W")   ' Возвращает 0
Категория
Функции обработки строк