打开关闭大括号检查

本文关键字:检查 开关 | 更新日期: 2023-09-27 18:37:07

我正在检查左大括号和右大括号。 假设这是我的输入

{

xyz{njdjd{lkdf}fj}jf}

当我编译输入左大括号和右大括号想要分离并存储在列表中时,我使用了以下代码

`List<Match> open=new List<Match>();
        List<Match> close = new List<Match>();
        MatchCollection openbrace = Regex.Matches(MELEdtior, "{");
        foreach(Match o in openbrace)
        {
            open.Add(o);
        }
        MatchCollection closebrace = Regex.Matches(MELEdtior, "}");
        foreach(Match c in closebrace)
        {
            close.Add(c);
        }

这很完美,我得到了两个带有左大括号和右大括号的单独列表。

现在我想比较列表并配对打开和关闭大括号。 如果任何一个打开或关闭错过了该对意味着想要显示错误。 为此,我用于每个循环。 我面临的意味着一个打开的大括号,可以检查所有关闭的大括号。 但我想用一个右大括号检查开大括号。

 if(open.Count==close.Count)
       {
        foreach(var openi in open)
        {
            foreach(var closei in close)
            {
               if( openi != closei)
               {
               }
               else { return "failed"; }
            }
        }
        }
        else{return "count failed";}
        return "";

怎么了?

打开关闭大括号检查

运行两个集合的单个循环应该可以解决您的问题。

        if (open.Count == close.Count)
        {
            var listCount = open.Count;
            for (var i = 0; i < listCount; i++)
            {
                if (open[i] != close[i])
                {
                }
                else
                {
                    return "failed";
                }
            }
        }
        else
        {
            return "count failed";
        }
        return "passed";