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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Для того, чтобы удалить текст, находящийся между двумя парными скобками [ ], включая сами скобки, можно использовать любую из нижеопубликованных функций. Обратите внимание на то, что данные функции можно использовать и при работе со скобками ( ) и { } , естественно, заменив "*[[]*]*" на "*(*)*" или "*{*}*" и использовав поиск не_нужных скобок (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