C#'解析')“ - 太多”的问题

时间:2012-03-13 00:35:56

标签: c#

我最近在测试我的C#程序时偶然发现了这个问题。

  

解析“)” - 太多了)

这是我的代码:

        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')'。 (并在第二个'如果'声明中撤销):我认为他们都是导致我的问题;但是,我对如何修复它没有任何线索。

非常感谢帮助。

1 个答案:

答案 0 :(得分:3)

您对SetStyle的调用中的字符串是正则表达式模式,因此)需要进行转义。问题是parens是Regex中的特殊字符。正则表达式解析器正在查看关闭的paren,但没有开放的paren来匹配它。

试试这个:

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