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

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

  • InStr() — ищет подстроку в строке. Возвращает номер позиции (значение типа ), с которой начинается вхождение подстроки в строку. Если подстрока в строку не входит, то возвращается значение 0. Формат функции:
InStr([<Начало>, ]<Строка>, <Подстрока>[, <Сравнение>])

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

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

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

  • vbBinaryCompare — 0 — двоичное сравнение. Сравнение зависит от регистра символов;
  • vbTextCompare — 1 — текстовое сравнение. Регистр символов при сравнении не учитывается.

Если параметр <Сравнение> не указан, то по умолчанию сравнение зависит от значения инструкции 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() — функция аналогична функции InStr(), но поиск производится с конца строки. Иными словами, функция InStrRev() возвращает позицию последнего вхождения подстроки в строку. Обратите внимание на то, что формат функции InStrRev() отличается от формата функции InStr() порядком следования параметров:
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() — производит замену всех вхождений подстроки в строку на другую подстроку и возвращает результат в виде новой строки. Формат функции:
Replace(<Строка>, <Подстрока для замены>, <Новая подстрока>[,
        <Начало>[, <Максимальное количество замен>[,
        <Сравнение>]]])

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

  • vbBinaryCompare — 0 — двоичное сравнение. Сравнение зависит от регистра символов;
  • vbTextCompare — 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трока

Visual Basic for Applications (VBA)
Самоучитель по VBA

Помощь сайту

Yandex-деньги: 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Поиск по сайту в Яндексе