我将输入作为字符串s1 =(RT)PO(Q(IT));并希望输出为RTPO(QIT)作为字符串。如果有一个括号作为第一个字符,我想删除括号及其右括号。此外,如果有2个连续括号,则删除内部括号。如果我得到这些括号的索引,那么我可以删除它们。
有人可以帮助我吗?我对Regex并不擅长。
答案 0 :(得分:0)
正则表达式对此毫无用处。您可以使用indexOf(char ch, int fromIndex):
;并且StringBuilder
也有deleteCharAt(int position)
。因此,您只需要在ArrayList
中保存所有左括号和右括号的索引,然后将其删除。当然,当你得到一个(
,然后获得)
之后,只有在(
之后才能找到下一个)
(使用{{} 1}}参数)并使用一些计数器来记住你有多少括号。
答案 1 :(得分:0)
如果有一个括号作为第一个字符,我想删除括号及其右括号。
***您可以即兴创作其余的代码
打包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"));