我有一个如下字符串:
"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。