gpt4 book ai didi

Java Regex - 拆分逗号分隔列表但排除方括号内的逗号

转载 作者:行者123 更新时间:2023-11-30 06:12:49 25 4
gpt4 key购买 nike

我正在尝试拆分下面的字符串,但我想排除 [[......]] 中的所有内容。我已经尝试使用我已经在这里找到的多个建议,但没有一个有效。

[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,因此您可以将外部 [] 替换为 {} s 并将其解析为 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 的内容,这样您就无需进行手动处理。

关于Java Regex - 拆分逗号分隔列表但排除方括号内的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32497948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com