簡體   English   中英

Java Regex - 拆分逗號分隔列表但排除方括號內的逗號

[英]Java Regex - Split comma separated list but exclude commas within square brackets

我正在嘗試拆分下面的字符串,但我想排除[[......]]中的所有內容。 我已經嘗試使用我已經在這里找到的多個建議,但它們都不起作用。

[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"}]]]

我嘗試用逗號分割字符串,但這也分割了方括號中包含的所有數據。

謝謝

除了[]的外部集合,它看起來像 JSON,因此您可以將外部[]替換為{}並將其解析為 JSON。

編輯:我有點太快回復了。 JSON 鍵必須是字符串,並且testtest1等也必須用引號括起來才能成為 JSON。 以下代碼在頂級逗號上拆分並打印出它們周圍的修剪字符串,刪除外部[] s。

....
  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 的內容,然后您就無需進行手動處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM