检查导入的txt文件中是否存在txt文件中的条目

时间:2019-06-08 16:39:18

标签: c#

我认为这是一段相当简单的代码,我有一个名为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,并且似乎没有在添加之前检查它们是否存在,但是查看代码后,我没有发现任何错误,我看过简单的东西,可以提供任何帮助。

1 个答案:

答案 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));
    } 
}

我还要注意一些常见的陷阱,例如区分大小写,多余的空格等。