2015-09-10 66 views
2

我想分割下面的字符串,但我想排除[[......]]中的所有内容。我已经尝试过使用我已经在这里找到的多个建议,但是他们都没有工作。Java正则表达式 - 拆分逗号分隔列表,但排除方括号内的逗号

[675: test, 676: test1, 677: test2, 678: [[{"id":0,"value":"15"},{"id":1,"value":"2"}, 
{"id":2,"value":"2"}],[{"id":0,"value":"2"},{"id":1,"value":"3"}, 
{"id":2,"value":"3"}],[{"id":0,"value":"5"},{"id":1,"value":"6"}, 
{"id":2,"value":"6"}],[{"id":0,"value":"7"},{"id":1,"value":"8"}], 
[{"id":0,"value":"99"},{"id":1,"value":"8"},{"id":2,"value":"7"}]]] 

我希望能够得到的结果是这样的:

675: test 
676: test1 
677: test2 
678: [[{"id":0,"value":"15"},{"id":1,"value":"2"}, {"id":2,"value":"2"}], 
    [{"id":0,"value":"2"},{"id":1,"value":"3"},{"id":2,"value":"3"}],  
    [{"id":0,"value":"5"},{"id":1,"value":"6"}, {"id":2,"value":"6"}], 
    [{"id":0,"value":"7"},{"id":1,"value":"8"}], 
    [{"id":0,"value":"99"},{"id":1,"value":"8"},{"id":2,"value":"7"}]]] 

我试图分裂用逗号字符串但分手包含在方括号内也的所有数据。

感谢

+1

您可以先将“[[”,然后将结果[0]分割为“,” –

回答

5

除了外集[],看起来像JSON,所以你可以用{}小号取代外[] S和解析它作为JSON。

编辑:我有点太快回复。 JSON密钥需要是字符串,并且test,test1等也必须在引号中为JSON。以下代码在顶级逗号分割并打印出围绕它们的修剪过的字符串,从而删除外部的[]

.... 
    public static void parse(String s) { 
    boolean quote = false; 
    int depth = 0; 
    int splitPoint = 1; // drop the first '[' 
    for (int i = 0; i < s.length(); i++) { 
     char c = s.charAt(i); 
     switch (c) { 
     case '"': 
      quote = !quote; 
      break; 
     case '{': 
     case '[': 
      if (!quote) { 
      depth += 1; 
      } 
      break; 
     case '}': 
     case ']': 
      if (!quote) { 
      depth -= 1; 
      } 
      break; 
     case ',': 
      if (!quote && depth == 1) { 
      System.out.println(s.substring(splitPoint, i).trim()); // or store 
      splitPoint = i + 1; 
      } 
      break; 
     } 
    } 
    System.out.println(s.substring(splitPoint, s.length() - 1).trim()); // or store 
    } 
.... 

输出:

675: test 
676: test1 
677: test2 
678: [[{"id":0,"value":"15"},{"id":1,"value":"2"},{"id":2,"value":"2"}],[{"id":0,"value":"2"},{"id":1,"value":"3"},{"id":2,"value":"3"}],[{"id":0,"value":"5"},{"id":1,"value":"6"},{"id":2,"value":"6"}],[{"id":0,"value":"7"},{"id":1,"value":"8"}], [{"id":0,"value":"99"}, 
{"id":1,"value":"8"},{"id":2,"value":"7"}]] 

如果你有机会到建立该字符串的代码,你最好把它打印东西是作为JSON直接解析的,然后你就没有必要做手动处理。

相关问题