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"被認為在括號之外并被解析為分隔符。
無論如何,我確信您可以比正則表達式答案更容易地調整我的答案,我的答案的全部意義在于表明編寫解析器來處理此類問題通常比費心嘗試制作正則表達式更現實。
添加回答
舉報