有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

regex如何使用Java获取字符串中括号内括号的索引

我以字符串s1=(RT)PO(Q(IT))的形式给出输入;并希望输出为RTPO(QIT)作为字符串。如果有一个括号作为第一个字符,我想删除该括号及其右括号。此外,如果有两个连续括号,则删除其中一个。如果我得到这些括号的索引,那么我可以删除它们

有人能帮我吗?我不擅长正则表达式


共 (3) 个答案

  1. # 1 楼答案

    正则表达式对此没有用处。你可以使用indexOf(char ch, int fromIndex):;和StringBuilder也有deleteCharAt(int position)。因此,您只需将所有左括号和右括号的索引保存在ArrayList中,然后删除它们。当然,微妙之处在于,当你得到一个(,然后得到后面的),然后只在最后一个)之后寻找下一个((使用fromIndex参数),并使用一些计数器来记住括号的深度

  2. # 2 楼答案

    以下代码符合您的第一个要求,即

    如果第一个字符中有一个括号,我想删除该括号及其右括号

    ***您可以为其余部分即兴编写代码

    • 在下面的程序中,我像解析器一样实现了arraylist。***

    包我的包

    导入java。util。ArrayList; 导入java。util。扫描仪

    公共类括号修改器{

    public static void main(String[] args) {
    
        Scanner scn=new Scanner(System.in);     
        System.out.println("enter the sample string ");     
        String sampleString=scn.next();
        int leftBracketCounter=0;
        int rightBrackerCounter=0;
        for(int i=0;i<sampleString.length();i++)
        {
    
            if(sampleString.charAt(i)=='(')
            {
                leftBracketCounter++;
            }
            else
                if(sampleString.charAt(i)==')')
                {
    
                    rightBrackerCounter++;
                    // System.out.println("first braket encounterd @ loc "+i);
                }
        }
    
    
    if(leftBracketCounter==rightBrackerCounter)
    {
        System.out.println("balanced String entered");
    
    }
    else {
        System.out.println("not a valid input");
    
    }
    
        ArrayList< String>alist=new ArrayList<>();  
        int last_bracket_loc=0;
    
        for(int i=0;i<sampleString.length();i++)
        {
            if(sampleString.charAt(i)=='(')
    
            {
                alist.add("(");         
                }
    
            else if (sampleString.charAt(i)==')') {     
                int alist_size=alist.size();
                alist.remove(alist_size-1);
                last_bracket_loc=i;
    
            }           
        }
    
    String temp = sampleString.substring(1,last_bracket_loc);
    System.out.println("finally the data remained is "+ temp);
    
    }
    }
    
  3. # 3 楼答案

    var demo = "(RT)PO(Q(IT))";
    var regex = /\((\w+)\)/g;
    document.write(demo.replace(regex,"$1"));