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