我用 Java 编写了一个括号检查器,在文本中搜索单引号时遇到问题。如果我有一个像下面这样的字符串(!在这种情况下,我感兴趣的是文本而不是代码):
else if (line.charAt(i)=='\''||line.charAt(i)=='\"'){
在调试器中,我看到在第一个等号之后,我的字符串中出现了以下字符:
0 = '
1 = \\\
2 = '
3 = '
我怎样才能将 1 和 2 结合起来 - 这样他就不会再读第二个 ' as ' 了?我认为它是用反斜杠完成的 - 但显然我做错了什么。
如果代码有任何帮助:这就是我对待单引号和双引号的方式:
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));
}
}
它失败了,因为在上面显示的行中它读取了三个单引号/双引号。它应该只读取其中两个。我不明白如何避免扫描仪将上面显示的语句中的第二个单/双引号读取为单引号。我认为这是用反斜杠完成的。