删除字符串vb.net的第二个括号

时间:2018-11-09 16:17:05

标签: asp.net vb.net trim

我有一个像这样的字符串

blabla (lo-g) (kk-jj)

我想像这样

blabla (lo-g)

但是在vb.net中已经是这样的时候

blabla (lo-g) with one parenteses

只需按原样

谢谢

3 个答案:

答案 0 :(得分:1)

Regex是一种功能强大,灵活且可配置的工具,可用于执行此类操作。从您的问题尚不清楚,在输入的其他变体中究竟需要遵循哪些规则,但这是一个示例,适用于您指定的输入:

Dim input As String = "blabla (lo-g) (kk-jj)"
Dim pattern As String = "(?<=^[^(]*\([^)]*\)\s*)\([^)]*\)(?=\s*$)"
Dim output As String = Regex.Replace(input, pattern, "")

但是,这不会删除像这样的输入的第二组括号:

blabla (lo-g) blabla (kk-jj) blabla
blabla (lo-g) (kk-jj) blabla

要处理此类变化,可以使用以下模式:

Dim input As String = "blabla (lo-g) with (kk-jj) trailing"
Dim pattern As String = "(?<=^[^(]*\([^)]*\)[^(]*)\([^)]*\)(?=[^(]*$)"
Dim output As String = Regex.Replace(input, pattern, "")

答案 1 :(得分:1)

我要感谢史蒂文的回答,但也感谢那些无法处理正则表达式的人(例如我) 这是一个简单的愚蠢方法

Dim res As String = String.Empty

        Dim check As Boolean = False

        For Each letter In teamname
            If letter = "(" Then
                If check = True Then
                    Exit For
                End If
                check = True
            End If
            res &= letter

        Next

        Return res

祝你好运

答案 2 :(得分:0)

由于您要避免使用RegEx,因此阅读版本我认为可以更简单/轻松地了解您要通过循环遍历每个字符完成的工作。基本上,您使用(字符作为分隔符将字符串分割成一个数组。因此,需要重新添加它们,但由于您只需要包含(或不包括)1,因此它们是名义上的。

基本上将您的字符串拆分为以下内容: “ blabla(lo-g)(kk-jj)”

Array(0)=“ blabla” Array(1)=“ lo-g)”

因此,Array(0)&“(”&Array(1)=“ blabla(lo-g)”,或者如果计数<= 1(字符

    Dim SplitText = text.Split("(")

    If SplitText.Length > 1 Then
        Return String.Format("{0}({1}", text.Split("(")(0), text.Split("(")(1))
        'This may be easier for you to read, though:
        'Return text.Split("(")(0) & "(" & text.Split("(")(1)
    End If

    Return text