我有一个像
这样的字符串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
我知道它看起来很奇怪,我可以通过使用传统的蛮力方法来实现,但是如果这些问题有任何最简单的逻辑,我需要这样做。
任何人都可以帮助我吗?
提前致谢: - )
答案 0 :(得分:2)
// 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;
这会有用吗?