我想做一些操作,直到满足以下条件之一^
html.IndexOf("/>")==0
html.IndexOf("</"+tagName+">")==0
html[0]=='<'
这里html是实际字符串。 我尝试了什么 - 只需对反向条件应用OR运算。但这是错误的。如何正确地做到这一点。这是我的代码:
while((html.IndexOf("/>")!=0)&&(html.IndexOf("</"+tagName+">")!=0)||(html[0]!='<'))
{
html = html.Remove(0, 1);
}
答案 0 :(得分:4)
由于某种原因,您正在混合AND和OR。
while(a && b || c)
但你想写
while(a && b && c)
代码应为:
while ( (html.IndexOf("/>")!=0)
&&(html.IndexOf("</"+tagName+">")!=0)
&&(html[0]!='<'))
我也会回应@ cdhowie的评论。使用HTML解析器将使您的代码更易于读取和编写,并使其对于各种输入更加健壮。
答案 1 :(得分:2)
您的代码很难阅读。您可能需要考虑拆分各个条件以便于维护:
while(true)
{
if(html.IndexOf("/>")==0) break; // stop the while loop if we reach the end of a tag
if(html.IndexOf("</"+tagName+">")==0) break; // or we find the close tag
if(html[0]=='<')) break; // or if we find the start of another tag
// otherwise, do this:
html = html.Remove(0, 1);
}