等于或小于不工作

本文关键字:工作 小于 | 更新日期: 2023-09-27 18:12:17

看了一个小时我都看不出我做错了什么(lol)

        // ofDialog settings
        ofDialog.Filter = @"TXT Files|*.txt";
        ofDialog.Title = @"Select linkslist...";
        ofDialog.FileName = "linksList.txt";
        // is cancel pressed?
        if (ofDialog.ShowDialog() == DialogResult.Cancel)
            return;
        try
        {
            var objReader = new StreamReader(ofDialog.FileName);
            while (objReader.Peek() >= 0)
            {
                // count the forward slashes
                string haystack = objReader.ReadLine();
                string needle = "/";
                int count = new Regex(Regex.Escape(needle)).Matches(haystack).Count;
                //  3 forward slashes or less add
                if (count <= 3)
                {
                    //Helpers.returnMessage("count=" + count + "equal to=" + 3);
                    // add urls to the listview
                    ListViewItem lv = listViewMain.Items.Add(objReader.ReadLine());
                    lv.SubItems.Add(count.ToString());
                }
            }
            Helpers.returnMessage("Job done!");
            // update count
        }
        catch (Exception ex)
        {
            Helpers.returnMessage(ex.Message);
        }

我试图计算"/"字符,如果它是3或更少添加到ListView,但它添加一些与4和更多,即使我指定:if (count <= 3)

有人能看到我的错误吗?:)

等于或小于不工作

呼叫ReadLine()两次。因此,您添加到ListViewMain.Items的行与您检查的行不同。

改变
ListViewItem lv = listViewMain.Items.Add(objReader.ReadLine());

ListViewItem lv = listViewMain.Items.Add(haystack);

同样值得指出的是,您应该为StreamReader使用using块。

using (var objReader = new StreamReader(ofDialog.FileName))
{
  while...
    //Rest of your code here.
}
Helpers.returnMessage("Job done!");

这样流将在完成时进行处理。必须避免内存泄漏