等于或小于不工作
本文关键字:工作 小于 | 更新日期: 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!");
这样流将在完成时进行处理。必须避免内存泄漏