gpt4 book ai didi

java - 如何获取组中嵌套括号的内容

转载 作者:行者123 更新时间:2023-12-04 09:45:22 28 4
gpt4 key购买 nike

我正在尝试拆分一个字符串,以便每个数组元素在左括号和右括号之间都有字符。
让我展示一下:

myString = "(2*((3-2)+(5-3)))"

所以我的数组应该有这样的值:
myArray[0] = 2*((3-2)+(5-3));

myArray[1] = (3-2)+(5-3);

myArray[2] = (3-2);

myArray[3] = (5-3);

我试图通过使用 .split() 来做到这一点,但它没有按预期工作。我对整个 RegEx 主题有点陌生

这是我的最新方法:
for (int i = 0; i <sb.length() ; i++) {
if(sb.charAt(i)=='('){
open=i;
between=0;
end=0;
for (int j = i+1; j <sb.length() ; j++) {
if(sb.charAt(j)=='('){
between++;
}
}for (int x = i+1; x <sb.length() ; x++) {
if(sb.charAt(x)==')'){
end++;
}
if(end==between){
a.add(sb.substring(open,x+2));
break;
}
}
}
}

最佳答案

我不知道如何使用正则表达式来实现这一点,但是如果没有正则表达式,我会想到这样的事情:

    private void findBetweenNestedBrackets(String input, List<String> matches) {
if(input.contains("(")) {
int firstBracket = input.indexOf("(") + 1;
int lastBracket = input.lastIndexOf(")");
if(firstBracket > lastBracket) {
String firstInsideBracket = input.substring(0, lastBracket);
String secondInsideBracket = input.substring(firstBracket);
matches.add(firstInsideBracket);
matches.add(secondInsideBracket);
findBetweenNestedBrackets(firstInsideBracket, matches);
findBetweenNestedBrackets(secondInsideBracket, matches);
} else {
String insideBracket = input.substring(firstBracket, lastBracket);
matches.add(insideBracket);
findBetweenNestedBrackets(insideBracket, matches);
}
}
}

@Test
public void test() {
final String input = "(2*((3-2)+(5-3)))";
List<String> matches = new ArrayList<>();
findBetweenNestedBrackets(input, matches);
matches.forEach(System.out::println);
}
这个解决方案并不完美,它会打印:

2*((3-2)+(5-3))

(3-2)+(5-3)

3-2)+(5-3 I assume this is not what you wanted, but you can get rid of such later

3-2

5-3


但我相信它接近你想要达到的目标。

关于java - 如何获取组中嵌套括号的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62152822/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com