Java 将字符串转换为数组
我有这样一个字符串:Java 将字符串转换为数组,java,algorithm,Java,Algorithm,我有这样一个字符串: (A,X(B,C,D),X(E,F),G,H) 我想把它转换成这样的数组: [{A}, {X(B,C,D)}, {X(E,F)}, {G}, {H}] 输入字符串可以有如下嵌套元素 (A,X(B,X(A,B),D)) 我想用树形结构来做。 在java中,最好的方法是什么?只要字符串没有像上面的示例那样的内部嵌套括号,就可以使用split: String str = "(A,X(B,C,D),X(E,F),G,H)"; String[] split
(A,X(B,C,D),X(E,F),G,H)
我想把它转换成这样的数组:
[{A}, {X(B,C,D)}, {X(E,F)}, {G}, {H}]
输入字符串可以有如下嵌套元素
(A,X(B,X(A,B),D))
我想用树形结构来做。
在java中,最好的方法是什么?只要字符串没有像上面的示例那样的内部嵌套括号,就可以使用split:
String str = "(A,X(B,C,D),X(E,F),G,H)";
String[] splited = str.substring(1, str.length()-1).split(",(?![^()]*\\))");
System.out.println(Arrays.toString(splited));
//output: [A, X(B,C,D), X(E,F), G, H]
String text=“(A,X(B,C(G,H),D),X(E,F),G,H)”;
int括号=0;
int lastcoma=0;
列表部件=新的ArrayList();
对于(inti=1;iAnd?您的问题是什么?是的,然后执行?使用String.split(“,”)@Sascha the String.split()在这种情况下不起作用case@Youssef然后,你必须像解析器一样进行操作。迭代字符并确定它是否是分隔的逗号。如果在开始或结束括号后有一个信息标志应该有所帮助。不幸的是,它可以有这样的嵌套参数“(a,X(B,X(a,B),D),X(E,F),G,H)”对于这样的输入,期望的输出是什么样子的?[{A},{X(B,X(A,B),D)},{X(E,F)},{G},{H}]就是这样谢谢你,先生,最后一个元素消失了,但我会试图找出是什么编辑了我的代码来纠正我的疏忽。检查循环后面的行。
String text="(A,X(B,C(G,H),D),X(E,F),G,H)";
int brackets=0;
int lastComma=0;
List<String> parts=new ArrayList<>();
for(int i=1;i<text.length()-1;i++)
{
char c=text.charAt(i);
if(c=='(')
brackets++;
else if(c==')')
brackets--;
else if(c==',' && brackets==0)
{
parts.add("{"+text.substring(lastComma+1,i)+"}");
lastComma=i;
}
}
parts.add("{"+text.substring(lastComma+1,text.length()-1)+"}");
System.out.println(parts); //[{A}, {X(B,C(G,H),D)}, {X(E,F)}, {G}, {H}]