Vba 获取字符串并删除括号之间的文本

Vba 获取字符串并删除括号之间的文本,vba,string,Vba,String,我正在尝试为我的第一个Visual Basic程序制作一个简单的文本转换器程序。我已经用Python写过了,但是我不知道如何用VisualBasic写 我需要程序运行一个字符串的字符,一旦遇到一个,就删除括号,忽略其余的文本,直到遇到一个 比如说,, 这句话不太好, 变成 这是一个句子 以前我用for循环检查字符串中的字符,然后检查它是否打开。如果不是,则会将该字符附加到下一个字符的输出字符串中;如果是,则会触发布尔值为true,从而停止附加该字符。然后,它将继续停止追加未来的字符,直到找到一个

我正在尝试为我的第一个Visual Basic程序制作一个简单的文本转换器程序。我已经用Python写过了,但是我不知道如何用VisualBasic写

我需要程序运行一个字符串的字符,一旦遇到一个,就删除括号,忽略其余的文本,直到遇到一个

比如说,, 这句话不太好, 变成 这是一个句子

以前我用for循环检查字符串中的字符,然后检查它是否打开。如果不是,则会将该字符附加到下一个字符的输出字符串中;如果是,则会触发布尔值为true,从而停止附加该字符。然后,它将继续停止追加未来的字符,直到找到一个右括号为止。在这一点上,它将使布尔值为false,停止追加闭括号,并返回追加字符,除非它是另一个括号


抱歉,如果这个描述有点粗糙,因为我不是最擅长描述事物的人,而且我对visual basic非常陌生。感谢您提供的任何帮助

您可以通过几种不同的方法实现这一点。这里有一个使用Instr的方法。Instr返回给定字符串在另一个字符串中的字符位置索引。您可以使用它来确定包含/排除字符串块的位置界限

您没有指定是否可以封装多个部分,所以我假设不会。然而,这是一个相对简单的调整,通过添加一个Do…循环或一段时间。。。函数中的循环

希望有帮助:

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

根据我的理解,你需要左、中、右的组合。据我所知,字符串类型在VBA中没有存储为数组。我知道在Python和C++中,你可以把字符串当作一个对象/数组来处理。同样,你可以使用String来返回一个分割字符串的数组。我可能用了Mid而不是左和右,但正如你所说,有很多方法可以解决这个问题。@BrianMStafford。谢谢是的,Mid/Mid$也完全有效。有很多方法可以做到这一点。非常感谢。我刚刚完成了一项功能,为我完成了这项工作。