java—需要基于分隔符拆分字符串,但这些分隔符是分组的

nwnhqdif  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(408)

我有一根绳子

String str = "(3456,"hello", world, {ok{fub=100, fet = 400, sub="true"}, null }, got, cab[{m,r,t}{u,u,r,}{r,m,"null"}], {y,i,oft{f,f,f,f,}, tu, yu, iu}, null, null)

现在我需要基于逗号(,)拆分这个字符串,但是不应该拆分{}和[]之间的字符串。所以我的输出应该是

3456
hello
world
{ok{fub=100, fet = 400, sub="true"}, null}
got
cab[{m,r,t}{u,u,r,}{r,m,"null"}]
{y,i,oft{f,f,f,f,}, tu, yu, iu}
null
null

我知道这看起来很奇怪,我可以用传统的暴力方法来解决,但是我需要知道,对于这类问题是否有最简单的逻辑。
有人能帮我吗?
提前感谢:-)

g0czyy6m

g0czyy6m1#

// Assuming open brackets have corresponding close brackets
int brackets = 0;
int currIndex = 0;
List<String> output = new ArrayList<String>();
for (int i = 0; i < str.length(); i++) {
    if (isOpenBracket(str.charAt(i))) {
        brackets++;
    } else if (isCloseBracket(str.charAt(i))) {
        brackets--;
    } else if (str.charAt(i) == ',') {
        output.add(str.substring(currIndex, i));
        currIndex = i + 1;
    }
}
output.add(currIndex, str.length());
return output;

这样行吗?

相关问题