1

以下の条件のいずれかが満たされるまで、何らかのアクションを実行したい ^ ^

  • 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);
}
4

2 に答える 2

4

何らかの理由で AND と OR が混在しています。あなたが持っている

while(a && b || c) 

しかし、あなたは書きたい

while(a && b && c) 

コードは次のようになります。

while (   (html.IndexOf("/>")!=0)
        &&(html.IndexOf("</"+tagName+">")!=0)
        &&(html[0]!='<'))

@cdhowie のコメントもエコーします。HTML パーサーを使用すると、コードの読み書きが容易になり、さまざまな入力に対してより堅牢になります。

于 2013-04-01T12:11:08.403 に答える
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);
}
于 2013-04-01T12:13:37.177 に答える