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

How to get the index of Parentheses inside Parentheses in a String using Java

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

有人可以帮我吗?我不擅长正则表达式。

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

以下代码满足您的第一个要求,即

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

***剩下的你可以自己动手写代码

  • 在下面的程序中,我已经像解析器一样实现了数组列表。***

包我的包;

进口java.util.ArrayList; 导入 java.util.Scanner;

public class BracketsModifier {

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);

}
}

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