Я пишу проверку скобок на Java и у меня проблемы с поиском одинарных кавычек в тексте. если у меня есть строка, например, например. следующее (! в данном случае меня интересует текст, а не код):
else if (line.charAt(i)=='\''||line.charAt(i)=='\"'){
в отладчике я вижу, что после первого знака равенства я получаю следующие символы в своей строке:
0 = '
1 = \\\
2 = '
3 = '
Как совместить 1 и 2 - чтобы он больше не читал второе 'как'? Я думал, что это делается с помощью обратной косой черты, но, очевидно, я делаю что-то не так.
Если код чем-то полезен: вот как я обрабатываю одинарные и двойные кавычки:
Stack <Character> theStack = new Stack<Character>();
// loop through file line per line
String line;
else if (line.charAt(i)=='\'' ||line.charAt(i)=='\"'){
// check whether there is already one of them on top
if (line.charAt(i)== '\'' && theStack.peek()=='\''){
theStack.pop();
}
else if (line.charAt(i)== '\"' && theStack.peek()=='\"'){
theStack.pop();
}
// else push new one on top
else {
theStack.push(line.charAt(i));
}
}
Это не удается, потому что в строке, показанной выше, он читает три одинарных/двойных кавычки. Он должен прочитать только два из них. Я не понимаю, как я могу избежать того, чтобы сканер считывал вторую одинарную/двойную кавычку в операторе, показанном выше, как одинарную кавычку. Я думал, что это делается с помощью обратной косой черты.