如何检查数组是否存在



我正在使用以下代码将HTML解析为数组。

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
  {
 var html = e.Result;
 var doc = new HtmlDocument();
 doc.LoadHtml(html); 
 var list = doc.DocumentNode.Descendants("div").ToList();
 var node = doc.DocumentNode.Descendants("table")   
           .FirstOrDefault(x => x.Id == "departures")   
           .Element("tbody")          .Elements("tr") 
           .Select(tr => tr.Elements("td")
           .Select(td => td.InnerText).ToArray()).ToArray(); 

然后用下面的代码输出到Texblock。

//first line 
textBlock1.Text = node[0][0];
textBlock2.Text = node[0][1];
textBlock3.Text = node[0][2];
  //Second line
 textBlock4.Text = node[1][0];
 textBlock5.Text = node[1][1];
 textBlock6.Text = node[1][2];
  //Third line 
textBlock7.Text = node[2][0];
textBlock8.Text = node[2][1];
textBlock9.Text = node[2][2];

我的问题是:HTMl每天都在变化,所以有时没有[2],有时多达[12]。

我想知道的是如何编写一个条件语句来检查数组是否存在,并且只在它有值时输出。

我已经尝试了下面的条件语句,但是当没有任何节点[2]或节点[1]结果时,它仍然显示一个未处理的异常

if (node[2][0].length > 0)
   {
       textBlock1.Text = node[2][0];
    }

任何帮助将不胜感激。如果你需要澄清这一点,请告诉我。

为避免无效索引,必须确保所有尺寸,例如

if (node.length > 2 && node[2].length > 0) {
    // Okay to use node[2][0]
    // Since && is short-circuiting it will never make second
    // check if first fails.
}

对我来说,一个更根本的问题似乎是文本框不是可变的,而是固定的(box1, box2等)。考虑使用不同的控件,也许是各种类型的列表控件。然后可以统一地添加n项(并且只使用循环结构,而不需要第一次索引检查)。文本框也可以动态创建,但这不是我的首选。

快乐编码。

相关内容

  • 没有找到相关文章

最新更新