打开关闭大括号检查

时间:2016-03-03 09:38:29

标签: c# regex

我正在检查开括号和闭括号。假设这是我的输入

  

{xyz {njdjd {lkdf} fj} jf}

当我编译那个输入开括号并且关闭括号想要分开并存储在列表中时我使用下面的代码

@interface ABCButton : UIButton
@property (weak, nonatomic) SAIBanner *banner;
@end
@implementation ABCButton
- (void)setBanner:(SAIBanner *)banner {
    _banner = banner;
    [self imageView].contentMode = UIViewContentModeScaleAspectFit;
    [self sd_setImageWithURL:[NSURL URLWithString:banner.bannerPicUrl] forState:UIControlStateNormal placeholderImage:[UIImage     imageNamed:@"default_banner"]];
}
@end

这完美地工作了,我得到了两个单独的列表,包括开括号和近距离支撑。

现在我要比较列表并配对打开和关闭括号。如果任何一个打开或关闭错过了那对意味着想要显示错误。因为我用于每个循环。我所面对的意味着一个开口支撑,检查所有紧密支撑。但我想用一个紧支撑检查开口支架。

`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);
        }

出了什么问题?

1 个答案:

答案 0 :(得分:0)

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

        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";