我有这个功能:
private void button6_Click(object sender, EventArgs e)
{
crawlLocaly1 = new CrawlLocaly();
crawlLocaly1.StartPosition = FormStartPosition.CenterParent;
DialogResult dr = crawlLocaly1.ShowDialog(this);
if (dr == DialogResult.Cancel)
{
crawlLocaly1.Close();
}
else if (dr == DialogResult.OK)
{
//LocalyKeyWords.Add(crawlLocaly1.getText() + "," + mainUrl);
if(LocalyKeyWords.ContainsKey(mainUrl))
{
LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
}
else
{
LocalyKeyWords.Add(mainUrl, new List<string>(new string[]
{
crawlLocaly1.getText()
}
));
}
crawlLocaly1.Close();
}
}
当用户向textBox输入内容并单击ok时,结果在LocalKeyWords中为Dictionary&gt;就像:
在索引0中,例如:http://www.google.com“,”google 谷歌是属于http://www.google.com
的关键现在,如果用户在网址上输入一次关键字,则会转到第二部分,如果用户更改同一网址的密钥,则会转到第一部分,如果用户更改了网址,则会转到到第二部分。
第一次为网址添加密钥时,它会更新相同网址的密钥或为新网址添加新密钥。
所以列表应该是这样的:
index 0 http://www.google.com,google
index 1 http://www.microsoft.com,com
依旧...... 并且此功能正常工作我只需要将List添加到硬盘上的文本文件中。 所以在Form1级别我有一个streamwriter w = new streamwriter(@“d:\ test.txt”);
事实上,当我在List上使用断点时,我在左侧看到了url,然后我看到了其他不是关键字的东西:
[0] = {[http://www.google.co.il, System.Collections.Generic.List`1[System.String]]}
它不是一个错误或者只是在断点上的东西,这就是我所看到的。而不是System.Collections.Generic.List`1 [System.String]我想看到关键字例如:google
如何将List值写入文本文件,以便文本文件格式如下:
0 http://www.google.com,google
1 http://www.microsoft.com,hello
2 http://www.cnet.com,Daniel
0 1 2显示索引,url显示mainUrl,右sie显示Keys(用户输入的关键字)。
然后如何将文本文件中的值读回lixtBox? 因此,当我在构造函数中运行程序时,它将读取文本文件并以listBox格式显示:
url: http://www.google.com --- keword: google
url: http://www.microsoft.com --- keword: hello
url: http://www.cnet.com --- keword: Daniel
因此在listBox中,用户会在文本文件中看到它更好。
答案 0 :(得分:0)
您可以尝试使用这个简单的代码将文本文件写入您的值:
int count = 0;
foreach(KeyValuePair<string, string> kvp in LocalyKeyWords)
{
w.WriteLine(count.ToString() + " " + kvp.Key + " " + kvp.Value);
count++;
}
w.Close();
此外,您可以使用以下代码读取该文本文件,我必须警告您,它不会检查您是否在文本文件中将所有三个字符串分隔为空白字符。此外,如果您存储的文本包含空白字符,则应将文件中的字符串与某些特殊字符分开。
TextReader r = new StreamReader(@"d:\test.txt");
string line = string.Empty;
while ((line = r.ReadLine()) != null)
{
string[] data = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
ListViewItem lvi = new ListViewItem("url: " + data[1] + " " + data[2]);
listView1.Items.Add(lvi);
}
答案 1 :(得分:0)
调试器告诉你的是准确的。您正在向集合添加字符串列表而不是字符串,这就是调试器向您显示列表而不是字符串的原因。认为这些工具是错误的,这是一个新手的错误。
LocalyKeyWords.Add(mainUrl, new List<string>(new string[]
顺便说一句,该语句甚至在语法上都不正确 - 你的结束括号丢失了。