2016-12-17 6 views
0

インテリセンスエラーのハイライト表示の目的で、テキストブロック内の括弧を壊すための効率的なアルゴリズムはありますか?例えば括弧を見つけましたか?

任意の ()[]{、または }文字が削除または追加正しく、正しい問題は、特定の文をスポッティング例えば、強調表示される可能性がありますされる可能性があります
function f() { 
    var a = [1, 2, 3]; 
    if ((a[1] < 1) || (a[0] > 2)) { 
     console.log((a + 5).toString()); 
    } 
} 

、機能、条件などの問題を引き起こすレベル項目

答えて

0

アルゴリズムは難しいことではありません。

  • は、コード内の各文字の文字
  • のスタックを持っている:
    • それは開口部ブラケットだ場合、スタック
    • にプッシュ閉じ括弧の場合、スタックから1つのチャンクをポップします。両方とも一致する必要があります。
  • 最後にスタックが空になっている必要があります

次に、不一致の括弧を強調表示できます。

+0

あなたは何か不足している可能性があり、それを捨てる別の場所に追加されたものがあるかもしれないので、それは問題を満足させないだろう。 – CoryG

+0

@CoryG例はありますか? – fafl

+0

ただいくつかのコードをいくつかのページに分けて、その中に括弧を追加/削除すると、ビジュアルスタジオは合理的な検出をしますが、完璧ではない場合もあります。エラー - 私は、新しい機能やそれに類するものについてコンテキストに特化した検索をする必要があるかもしれないと思っていますが、JavaScriptのようなものであってもそれは理想的ではありません。 – CoryG

0

あなたの問題に近づく方法の1つは、一致する括弧のグループを検証することです。これは、正規表現を使用して実現できます -:Steven Levithan

+0

笑、確かにこれのための正規表現で行くつもりはありません。 – CoryG

関連する問題