如何使用 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,""));
我以字符串形式提供输入 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,""));