1 回答
TA贡献1835条经验 获得超7个赞
这是一个可以实现您需求的解析器示例:
public static List<String> splitter(String input) {
int nestingLevel=0;
StringBuilder currentToken=new StringBuilder();
List<String> result = new ArrayList<>();
for (char c: input.toCharArray()) {
if (nestingLevel==0 && c == '/') { // the character is a separator !
result.add(currentToken.toString());
currentToken=new StringBuilder();
} else {
if (c == '(') { nestingLevel++; }
else if (c == ')' && nestingLevel > 0) { nestingLevel--; }
currentToken.append(c);
}
}
result.add(currentToken.toString());
return result;
}
你可以在这里试试。
请注意,它不会导致您发布的预期输出,但我不确定您遵循什么算法来获得这样的结果。特别是我已经确保没有“负嵌套级别”,所以对于初学者来说,/in"Mango 003 )/( ASDJ"被认为在括号之外并被解析为分隔符。
无论如何,我确信您可以比正则表达式答案更容易地调整我的答案,我的答案的全部意义在于表明编写解析器来处理此类问题通常比费心尝试制作正则表达式更现实。
添加回答
举报
