我认为这是一段相当简单的代码,我有一个名为template-success.txt
的.txt文件,其中仅包含以下条目:
article|url.com
article|url.com
article|url.org
article|url.org
private void BtnImportDomains_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = @"Text files|*.txt";
ofd.Title = @"Select your url file ...";
ofd.FileName = "urls.txt";
if (ofd.ShowDialog() == DialogResult.Cancel)
{
return;
}
var sites = File.ReadAllLines(ofd.FileName);
var lines = File.ReadAllLines(@"py-templates\template-success.txt");
foreach (string site in sites)
{
if (!lines.Contains(site))
{
dataGridViewMain.Rows.Add(TrimToRoot(site));
}
}
}
因此,当我导入一个新的.txt文件时,我正在检查template-success.txt
文件中的一行是否包含相同的域,如果它已经在主文件中,则不要将其添加到datagrid中,上面的代码添加了所有导入的url,并且似乎没有在添加之前检查它们是否存在,但是查看代码后,我没有发现任何错误,我看过简单的东西,可以提供任何帮助。>
答案 0 :(得分:0)
lines.Contains()
仅在存在与true
完全匹配的整行时才返回site
。您需要遍历各行,并针对每行查看是否line.Contains(site)
。
或者,您可以将整个文件读取为单个字符串,这将起作用。
var wholeFile = File.ReadAllText(@"py-templates\template-success.txt");
foreach (string site in sites)
{
if (!wholeFile.Contains(site))
{
dataGridViewMain.Rows.Add(TrimToRoot(site));
}
}
我还要注意一些常见的陷阱,例如区分大小写,多余的空格等。