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));
}
}
上記の行で 3 つの一重引用符または二重引用符を読み取るため、失敗します。そのうちの 2 つだけを読み取る必要があります。スキャナーが上記のステートメントの 2 番目の一重/二重引用符を一重引用符として読み取らないようにする方法がわかりません。バックスラッシュで行われていると思いました。