Поиск и замена в строке

Для поиска и замены в строке используются следующие функции:

InStr([<Начало>, ]<Строка>, <Подстрока>[, <Сравнение>])

Если начальная позиция не указана, то поиск будет производиться с начала строки. Если указан параметр <Сравнение>, то обязательно должен быть указан и параметр <Начало>. Пример:

Debug.Print InStr("пример пример Пример", "при")     ' 1
Debug.Print InStr("пример пример Пример", "тест")    ' 0
Debug.Print InStr(5, "пример пример Пример", "при")  ' 8

Параметр <Сравнение> задает способ сравнения. Можно указать следующие константы (или соответствующие им значения):

Если параметр <Сравнение> не указан, то по умолчанию сравнение зависит от значения инструкции Option Compare, которая должна быть расположена в самом начале модуля. Если инструкция имеет значение Binary (или инструкция не указана), то используется двоичное сравнение, а если Text— то текстовое сравнение. Пример:

Debug.Print InStr("пример пример Пример", "При")
' 15 (если Option Compare Binary)
' 1  (если Option Compare Text)
Debug.Print InStr(1, "пример Пример", "При", vbBinaryCompare)
' 8
Debug.Print InStr(1, "пример Пример", "При", vbTextCompare) ' 1
InstrRev(<Строка>, <Подстрока>[, <Начало>[, <Сравнение>]])

Если начальная позиция не указана, то используется значение -1, которое означает, что поиск будет производиться с конца строки. Пример:

Debug.Print InStrRev("Пример пример", "при")  ' 8
Debug.Print InStrRev("Пример пример", "При")
' 1 (если Option Compare Binary)
' 8 (если Option Compare Text)
Debug.Print InStrRev("Пример пример", "тест") ' 0
Debug.Print InStrRev("Пример пример", "при", 12)  ' 8
Debug.Print InStrRev("Пример пример", "При", -1, vbBinaryCompare)
' 1
Debug.Print InStrRev("Пример пример", "При", -1, vbTextCompare)
' 8
Replace(<Строка>, <Подстрока для замены>, <Новая подстрока>[,
        <Начало>[, <Максимальное количество замен>[,
        <Сравнение>]]])

Если начальная позиция не указана, то поиск будет производиться с начала строки. Если параметр <Максимальное количество замен> не указан, то используется значение -1, которое означает, что лимит не используется. Параметр <Сравнение> задает способ сравнения. Можно указать следующие константы (или соответствующие им значения):

Если параметр <Сравнение> не указан, то по умолчанию сравнение зависит от значения инструкции Option Compare, которая должна быть расположена в самом начале модуля. Если инструкция имеет значение Binary (или инструкция не указана), то используется двоичное сравнение, а если Text— то текстовое сравнение. Пример:

Debug.Print Replace("Привет, Петя", "Петя", "Вася")
' Привет, Вася
Debug.Print Replace("Привет, Петя", "петя", "Вася")
' Привет, Петя (если Option Compare Binary)
' Привет, Вася (если Option Compare Text)
Debug.Print Replace("Привет, Петя", "петя", "Вася", , , _
                    vbBinaryCompare) ' Привет, Петя
Debug.Print Replace("Привет, Петя", "петя", "Вася", , , _
                    vbTextCompare)   ' Привет, Вася
Debug.Print Replace("strstrstrstrstr", "str", "")
' Возвращается пустая строка
Debug.Print Replace("strstrstrstrstr", "str", "", 1, 3)
' strstr

Произвести замену позволяют также функции Mid() и MidB(), если они расположены слева от оператора присваивания. Подробное описание функций приведено в разд. 6.3. Пример:

Dim s As String
s = "строка"
Mid(s, 1, 1) = "7"
Debug.Print s ' 7трока
Предыдущая статья Все статьи Следующая статья