1

我有一个文件解析器,它根据条件评估 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
        }
    }

}

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

4

1 回答 1

0

您可能可以一起摆脱外部 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;
    }
于 2015-03-24T19:09:24.253 回答