如何使用Java获取String中圆括号内的圆括号索引

时间:2016-10-27 07:53:33

标签: java regex string parentheses

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

有人可以帮助我吗?我对Regex并不擅长。

3 个答案:

答案 0 :(得分:0)

正则表达式对此毫无用处。您可以使用indexOf(char ch, int fromIndex):;并且StringBuilder也有deleteCharAt(int position)。因此,您只需要在ArrayList中保存所有左括号和右括号的索引,然后将其删除。当然,当你得到一个(,然后获得)之后,只有在(之后才能找到下一个)(使用{{} 1}}参数)并使用一些计数器来记住你有多少括号。

答案 1 :(得分:0)

以下代码回答了您的第一个要求,即

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

***您可以即兴创作其余的代码

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

打包mypackage;

import java.util.ArrayList; import 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);

}
}

答案 2 :(得分:0)

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