Java 用嵌套逗号拆分字符串

标签 java arrays regex arraylist split

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

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

我只想用逗号将字符串拆分到第一级。我期待的输出是

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

我尝试使用正则表达式在 Java 中拆分字符串,但无法获得正确的输出。 我们怎样才能做到这一点?

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

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

最佳答案

试试这个。

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);

结果

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

关于Java 用嵌套逗号拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939602/

相关文章:

用于查找超过 1 个空格但不以换行符结尾的字符串的正则表达式

c# - AvalonEdit:是否可以突出显示此语法?

Java : "GC Overhead limit exceeded" despite plenty of memory to allocate available

arrays - Swift 数组可选类型和下标(Beta 3)

regex - 创建一个正则表达式来匹配文件中 1 - 999 之间的数字

arrays - 如何在 Go 中分配非常量大小的数组

java - 您好,我如何找到数组中的值和位置

java - 同步线程方法并发执行 - 为什么?

java - UML:方法图而不是类图?

java - 从命令行获取参数