如何制作列表的列表?然后向每个List中添加值

本文关键字:列表 List 添加 何制作 然后 | 更新日期: 2023-09-27 18:09:04

class ExtractLinks
{
    WebClient contents = new WebClient();
    string cont;
    List<string> links = new List<string>();
    List<string> FilteredLinks = new List<string>();
    List<string> Respones = new List<string>();
    List<List<string>> Threads = new List<List<string>>();
    public void Links(string FileName)
    {
        HtmlDocument doc = new HtmlDocument();
        doc.Load(FileName);
        foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
        {
            HtmlAttribute att = link.Attributes["href"];
            if (att.Value.StartsWith("http://rotter.net/forum/scoops1"))
            {
                links.Add(att.Value);
            }
        }
        for (int i = 0; i < links.Count; i++)
        {
            int f = links[i].IndexOf("#");
            string test = links[i].Substring(0, f);
            FilteredLinks.Add(test);
        }
        for (int i = 0; i < FilteredLinks.Count; i++)
        {
            contents.Encoding = System.Text.Encoding.GetEncoding(1255);
            cont = contents.DownloadString(FilteredLinks[i]);
            GetResponsers(cont);
        }
    }
    private void GetResponsers(string contents)
    {
        int f = 0;
        int startPos = 0;
        while (true)
        {
            string firstTag = "<FONT CLASS='text16b'>";
            string lastTag = "&n";
            f = contents.IndexOf(firstTag, startPos);
            if (f == -1)
            {
                break;
            }
            int g = contents.IndexOf(lastTag, f);
            startPos = g + lastTag.Length;
            string responser = contents.Substring(f + firstTag.Length, g - f - firstTag.Length);
            foreach (List<string> subList in Threads)
            {                
            }
        }   
    }
}

我创建了这个变量:

List<List<string>> Threads = new List<List<string>>();

我还不知道如何做的第一件事是如何根据链接方法内的FilteredLinks.Count创建列表的内部线程数。

第二件事是在GetResponsers方法中:

foreach (List<string> subList in Threads)
{
}

但是我想要的是第一次它会将所有的值从变量responser添加到线程中的第一个列表。当它到达断点的时候;然后停止,然后在Links方法中调用GetResponsers(cont);再次,这一次我想把responser中的所有值都添加到Threads中的第二个List中。

我知道每一次它都要到break;它将从FilteredLinks获取下一个FilteredLink

  1. 如何根据FilteredLinks.Count创建线程中列表的数量?

  2. 我如何使代码在GetResponsers添加响应器?

如何制作列表的列表?然后向每个List中添加值

  1. 您不需要指定线程中列表数量的计数,因为它是一个列表,您可以简单地向它添加列表。所以第一部分是正确的,你在哪里声明它。
  2. 第二部分->您的呼叫方法将更改。查看下面的调用方法。
  3. 第三部分->将private void GetResponsers(string contents)更改为private void GetResponsers(List threadList, string contents)。查看下面的实现更改。

循环也是这样的然后

        //other code you have    
        List<List<string>> Threads = new List<List<string>>();
        public void Links(string FileName)
        {
      // ...other code you have
       for (int i = 0; i < FilteredLinks.Count; i++)
            {  
               threads.Add(new List<string>);
                contents.Encoding = System.Text.Encoding.GetEncoding(1255);
                cont = contents.DownloadString(FilteredLinks[i]);
                GetResponsers(threads[threads.Count - 1], cont);
            }
        }
     private void GetResponsers(List<string> threadList, string contents)
                {
                    int f = 0;
                    int startPos = 0;
                    while (true)
                    {
                        string firstTag = "<FONT CLASS='text16b'>";
                        string lastTag = "&n";
                        f = contents.IndexOf(firstTag, startPos);
                        if (f == -1)
                        {
                            break;
                        }
                        int g = contents.IndexOf(lastTag, f);
                        startPos = g + lastTag.Length;
                        string responser = contents.Substring(f + firstTag.Length, g - f - firstTag.Length);
                        threadList.Add(responser);    
                    }   
                }

PS:请原谅格式。

如何制作列表的列表?然后添加到每个List值?

下面的代码片段向您演示如何处理List<List<string>>

List<List<string>> threads = new List<List<string>>();
List<string> list1 = new List<string>();
list1.Add("List1_1");
list1.Add("List1_2")
threads.Add(list1);
List<string> list2 = new List<string>();
list1.Add("List2_1");
list1.Add("List2_2")
list1.Add("List2_3")
threads.Add(list2);
  1. 我如何创建线程列表的数量根据FilteredLinks。算数吗?
for(int i = 0; i < FilteredLinks.Count; i++)
{
  var newList = new List<string>();
  newList.Add("item1"); //add whatever you wish, here.
  newList.Add("item2");
  Threads.Add(newList);
}
问题2恐怕我帮不了你,因为我不明白你到底想达到什么目的。
相关文章: