2012-03-13 8 views
-2

私は最近、C#プログラムのテスト中にこの問題を遭遇しました。C# 'parsing ")" - Too Many)の問題

解析 ")" -

)さんが多すぎる。ここは私のコードです:

 try 
     { 
      if (e.ChangedRange.Text.Contains(";") && Convert.ToBoolean(e.ChangedRange.Text.IndexOf(")", 1))) 
      { 
       if (!e.ChangedRange.Text.Contains(";") && !Convert.ToBoolean(e.ChangedRange.Text.IndexOf(")", 1))) 
        LuaLibrary.isParenthesesSemiColonError = false; 
       else 
       { 
        LuaLibrary.isParenthesesSemiColonError = true; 
        e.ChangedRange.SetStyle(error_red, ");", RegexOptions.IgnoreCase); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

私は、私はかどうかをチェックしていますここでやっている何を現在の行(e.ChangedRange.Text)には ';' IndexOf a ')'を使用します。 (そして、2番目の「if」ステートメントで逆転した):私は彼らが両方とも私の問題を引き起こしていると仮定しています。しかし、私はそれを修正する方法の手がかりを持っていません。

助けていただければ幸いです。

+1

出力を見て、書式設定のエラーを見つけます。 –

+3

[parsing "\(|。*?)|)"の重複可能性があります。 - 多すぎます。 ''(http://stackoverflow.com/questions/6420758/parsing-too-many-s) – Joe

+0

LuaLibraryは本当にparaenthesesとして括弧を付ける?少し乾いた練習は助けになるかもしれません。 – Tod

答えて

3

SetStyleへの呼び出しの文字列は正規表現のパターンなので、)をエスケープする必要があります。問題は、括弧が正規表現の特殊文字だということです。正規表現パーサは閉じている括弧を見ていますが、それに一致する括弧はありません。

はこれを試してみてください:

e.ChangedRange.SetStyle(error_red, @"\);", RegexOptions.IgnoreCase); 
+0

私は実際にこれをしました。問題は続くと言います。 'Contains'に "^ [a-zA-Z] + $"のようなものがある場合、if文は機能しません。 –

+0

どのような種類のオブジェクトが 'e'ですか? –

+0

@TommyCooper - 部分文字列の存在をテストするために正規表現に '^'と '$'を付けたくありません –