Функция 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 ="Мир MS Excel" ' Исходная строка
SearchChar = "р" ' Следует найти "р"
' Посимвольное сравнение, начиная с позиции 2. Возвращает 2
MyPos = Instr(2, SearchString, SearchChar, vbTextCompare)
' Двоичное сравнение, начиная с позиции 1. Возвращает 3
MyPos = Instr(1, SearchString, SearchChar, 0)
' Сравнение является двоичным по умолчанию (последний аргумент опущен)
MyPos = Instr(SearchString, SearchChar) ' Возвращает 3
MyPos = Instr(1, SearchString, "W") ' Возвращает 0
Категория
Функции обработки строк |