Удалить текст, находящийся между двумя парными скобками, включая сами скобки — Visual Basic(Бейсик)

Для того, чтобы удалить текст, находящийся между двумя парными скобками [ ], включая сами скобки, можно использовать любую из нижеопубликованных функций. Обратите внимание на то, что данные функции можно использовать и при работе со скобками ( ) и { } , естественно, заменив "*[[]*]*" на "*(*)*" или "*{*}*" и использовав поиск не_нужных скобок (VB функция InStr). Если же с реализацией подобной замены, возникли трудности, то в примере можно найти универсальную функцию, позволяющую указать нужный "тип" скобок.

Private Function DeleteTextInBrackets$(iText$)
    Dim iStart%, iLength%
    Do While iText Like "*[[]*]*"
       iStart = InStr(iText, "[")
       iLength = InStr(iStart, iText, "]") - iStart + 1
       iText = Application.Replace(iText, iStart, iLength, "")
    Loop
    DeleteTextInBrackets = iText
End Function
Private Function DeleteTextInBrackets$(iText$)
    Dim iStart&, iEnd&
    Do While iText Like "*[[]*]*"
       iStart = InStr(iText, "[")
       iEnd = InStr(iStart, iText, "]")
       iText = Mid(iText, 1, iStart - 1) & Mid(iText, iEnd + 1)
    Loop
    DeleteTextInBrackets = iText
End Function

Private Function DeleteTextInBrackets$(iText$) 'XL97
    Dim iStart%, iLength%
    Do While iText Like "*[[]*]*"
       iStart = InStr(iText, "[")
       iLength = InStr(iStart, iText, "]") - iStart + 1
       iText = Application.Substitute(iText, Mid(iText, iStart, iLength), "")
    Loop
    DeleteTextInBrackets = iText
End Function

Private Function DeleteTextInBrackets$(iText$) 'XL2000
    Dim iStart&, iLength&
    Do While iText Like "*[[]*]*"
       iStart = InStr(iText, "[")
       iLength = InStr(iStart, iText, "]") - iStart + 1
       iText = Replace(iText, Mid(iText, iStart, iLength), "")
    Loop
    DeleteTextInBrackets = iText
End Function
Максимально допустимое количество символов в строке не должно превышать 32767 (актуально только для первого и третьего варианта)

Leave a Comment