Взятие строки и удаление текста в скобках - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь сделать простую программу конвертации текста для моего первого Visual Basic program. Я уже написал это в Python, но я не уверен, как это сделать в Visual Basic.

Мне нужно, чтобы программа запускала символы строки, и как только она встречает (, чтобы затем снять скобку и игнорировать остальную часть текста, пока она не встретит ) .

Например, «Это (не очень хорошее) предложение» становится «Это предложение».

Ранее я делал это с помощью для l oop, который просматривал символ в строке, а затем проверял, был ли он открытым. Если бы это было не так, это добавило бы символ к выходной строке к следующему символу, или если бы это было так, то это вызвало бы логическое значение true, что остановило бы добавление символа. Затем он продолжит останавливать добавление будущих символов, пока не найдет закрывающую скобку. В этот момент он сделает логическое значение false, остановит добавление закрытой скобки и вернется к добавляемым символам, если только это не была другая скобка.

Извините, если это описание немного грубовато, поскольку я не лучший в описании вещей, и я очень плохо знаком с visual basi c. Спасибо за любую помощь, оказанную

1 Ответ

1 голос
/ 05 апреля 2020

Вы можете достичь этого несколькими разными способами. Вот один метод, использующий Instr. Instr возвращает позицию символа (индекс) данной строки в другой строке. Вы можете использовать это, чтобы определить границы того, где включать / исключать фрагмент строки.

Вы не указали, может ли быть несколько разделов, инкапсулированных в (), поэтому я предположил, что их не будет. Тем не менее, это относительно простая настройка, добавив в функцию Do...Loop или While... l oop.

Надеюсь, это поможет:

Option Explicit

Public Function removeBrackets(Source As String, Optional RemoveDoubleSpaces As Boolean = False)
    Dim FirstBracket    As Long
    Dim SecondBracket   As Long

    FirstBracket = InStr(1, Source, "(")
    SecondBracket = InStr(1, Source, ")")

    If FirstBracket >= SecondBracket Or FirstBracket = 0 Or SecondBracket = 0 Then Exit Function

    removeBrackets = Left$(Source, FirstBracket - 1) & Right$(Source, Len(Source) - SecondBracket)
    If RemoveDoubleSpaces Then removeBrackets = Replace$(removeBrackets, "  ", " ")
End Function

'Run this
Sub Test()
    Debug.Print "The value returned is: " & removeBrackets("This is a (not so good) sentence") ' Example given
    Debug.Print "The value returned is: " & removeBrackets("This is a (not so good) sentence", True) ' Example given, slight revision. Remove double spaces
    Debug.Print "The value returned is: " & removeBrackets("This is a (not so good sentence") ' missing ending bracket
    Debug.Print "The value returned is: " & removeBrackets("This is a not so good) sentence") ' missing starting bracket
    Debug.Print "The value returned is: " & removeBrackets("This is a not so good sentence") ' No brackets
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...