如何制作列表的列表?然后向每个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
。
如何根据
FilteredLinks.Count
创建线程中列表的数量?我如何使代码在GetResponsers添加响应器?
- 您不需要指定线程中列表数量的计数,因为它是一个列表,您可以简单地向它添加列表。所以第一部分是正确的,你在哪里声明它。
- 第二部分->您的呼叫方法将更改。查看下面的调用方法。
- 第三部分->将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);
- 我如何创建线程列表的数量根据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恐怕我帮不了你,因为我不明白你到底想达到什么目的。