在分隔符上使用深层嵌套括号分割字符串

时间:2019-02-15 15:55:42

标签: java regex

我有一个如下字符串:

"a|b|c(d|e(f|g))|h|"

我需要按分隔符将其分割|但忽略括号内的分隔符

预期结果是一个字符串数组

["a", "b", "c(d|e(f|g))", "h", ""]

我的代码:

public static String[] splitter(String input, char separator) {
    List<String> result = new ArrayList<>();
    int level = 0;
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < input.length(); i++) {
        char c = input.charAt(i);
        if (c == '|' && level == 0) {
            result.add(stringBuilder.toString());
            stringBuilder = new StringBuilder();
        } else {
            stringBuilder.append(c);
            if (c == '(') level++;
            else if (c == ')' && level > 0) level--;
        }
    }
    result.add(stringBuilder.toString());
    return result.toArray(new String[result.size()]);
}

代码按预期工作,但我想知道是否有更好的解决方案,最好使用regexp。

0 个答案:

没有答案