Как удалить текст, находящийся между двумя парными скобками, включая сами скобки?
Категория: Basic
2012-09-18 16:07:23
Для того, чтобы удалить текст, находящийся между двумя парными скобками [ ], включая сами скобки, можно использовать любую из нижеопубликованных функций. Обратите внимание на то, что данные функции можно использовать и при работе со скобками ( ) и { } , естественно, заменив "*[[]*]*" на "*(*)*" или "*{*}*" и использовав поиск не_нужных скобок (VB функция InStr). Если же с реализацией подобной замены, возникли трудности, то в примере можно найти универсальную функцию, позволяющую указать нужный "тип" скобок.
code: #vba
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
code: #vba
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
code: #vba
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
code: #vba
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 (актуально только для первого и третьего варианта)
Поделиться: