Java使用嵌套逗号分割字符串

时间:2016-10-09 03:06:12

标签: java arrays regex arraylist split

我有一个嵌套的逗号字符串,例如

def f(array:Array[Int], key:Int) = 
  (key, array.withFilter(_._1==key).map(_._2).toList)

我想用逗号分割字符串,直到第1级。我期待的输出是

[1,2,[],[a,b],[ab,bc,cd],[1,2,[3,4],[5,6],7]]

我尝试使用regexp在Java中拆分字符串,但无法获得正确的输出。 我们怎么能实现这个目标呢?

虽然这个问题 Java: splitting a comma-separated string but ignoring commas in quotes

很有用,但我有单独的开始和结束嵌套标记([,]),所以我无法直接使用该解决方案

1 个答案:

答案 0 :(得分:5)

试试这个。

for(i in 1:10) lh <- add(lh,i)

结果

String s = "[1,2,[],[a,b],[ab,bc,cd],[1,2,[3,4],[5,6],7]]";
StringBuilder sb = new StringBuilder();
int nest = 0;
for (int i = 1; i < s.length() - 1; ++i) {
    char ch = s.charAt(i);
    switch (ch) {
    case ',':
        if (nest == 0) {
            System.out.println(sb);
            sb.setLength(0);
            continue;
        }
        break;
    case '[': ++nest; break;
    case ']': --nest; break;
    }
    sb.append(ch);
}
System.out.println(sb);