C# 索引和长度必须引用该字符串内的位置

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:39:10
源程序
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
StreamReader r = File.OpenText("2009-03.log");
DumpLog(r);
}

public void DumpLog(StreamReader r)
{
String line;
while ((line = r.ReadLine()) != null)
{
if (line.Substring(0,10)==DateTime.Now.ToString("yyyy-MM-dd"))
this.logstr.Text += line + Environment.NewLine;
}
r.Close();
}
}

调试时说这一句 if (line.Substring(0,10)==DateTime.Now.ToString("yyyy-MM-dd")) 索引和长度必须引用该字符串内的位置

你这个问题错在,你用那个10,如果你的每个line值你都保证有10个以上的话就不会有错了,可以当你有一个没有10个长度,而你却要求要截取10个长度,就会报错。
你可以这样改一下你的代码,
while ((line = r.ReadLine()) != null&&line.length>=10)
这样就可以保证你那句不会有错了

你可以把这句while ((line = r.ReadLine()) != null) 改一下
while(r.ReadLine()!="")

或者是你读取的那个文件数据有些不符合你的要求,在
if (line.Substring(0,10)==DateTime.Now.ToString("yyyy-MM-dd"))
前可以先检测一下