转义嵌套的 IF 语句并根据父条件评估变量

Escape a nested IF statement and evaluate the variable against parent condition

我有一个文件解析器,它根据条件评估 txt 文件的每一行。如果满足条件,则根据一系列嵌套的 IF 语句评估文件中的后续行。 我想做的是在再次满足父条件后跳出嵌套的 IF 语句,然后评估违反父条件的行并让它再次触发嵌套评估。我这样做是因为所有嵌套的 IF 语句都提取有关父项的数据。当我碰到另一个父项目时,逃避子评估并重新开始。

这是一种糟糕的处理方式吗?

这是我的伪代码

if (line.Contains(":rule ("))
{
    bInRuleFlag = true;

    while (bInRuleFlag == true)
    {
        if (line.Contains(":rule ("))
        {
            bInRuleFlag = false;
            // I have hit a parent element.
            // escape the while loop here and evaluate line against  the parent IF
        }
        else if (line.contatins(""))
        {
            //gets child elements to the rule
        }
        else if (line.contatins(""))
        {
            //gets child elements to the rule
        }
    }

}

如果有任何关于更好的方法的建议,我将不胜感激。

您可以完全去掉外部 if 语句,您的代码将像您描述的那样工作。

while (line.Contains(":rule ("))
{
    if (line.contatins(""))
    {
        //gets child elements to the rule
    }
    else if (line.contatins(""))
    {
        //gets child elements to the rule
    }
}

另外,您可以使用 break 命令跳出 while 循环

    if (line.Contains(":rule ("))
    {
        break;
    }

如果你只想到此为止,直接进入循环的下一次迭代,那么你可以使用continue关键字

    if (line.Contains(":rule ("))
    {
        continue;
    }