当我试图删除我的csv文件的最后一行时,当我试图绘制数据图表时,我遇到了麻烦。 我的文件包含大量数据,我通过以下代码获取:
public void StreamOpen()
{
Stream stream;
OpenFileDialog getDialog = new OpenFileDialog();
getDialog.Filter = "csv File|*.csv";
getDialog.Title = "Get a .csv file";
if (getDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if ((stream = getDialog.OpenFile()) != null)
{
strFileName = getDialog.FileName;
string[] filetext = File.ReadAllLines(strFileName);
}
stream.Flush();
}
}
public void OpenFile()
{
if (!File.Exists(strFileName))
{
ListA();
ListB();
}
if (strFileName != null)
{
var reader = new StreamReader(File.OpenRead(strFileName));
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
UpdateChart();
listA.Add(values[0]);
listB.Add(values[1]);
}
}
ListA();
ListB();
}
问题是,在我文件的最后一行,我保存了一个像
这样的文本“动作计数”+值
,我想在绘制该图表时跳过这个值,而不想在文本框中显示该值。 现在出现错误,listA和listB不一样,我明白为什么,因为最后一行是listA的一部分。
希望你能帮我删除最后一行,并帮我展示如何在文本框中保存该值。
文本文件中的输出:
09:03:28 ; 0
09:03:29 ; 1
09:03:30 ; 0
09:03:31 ; 0
Count of movements 2
答案 0 :(得分:0)
这种方法怎么样:
string[] values = line.Split(';');
if(values.Length != expected_column_count) // then ignore
<小时/> 的修改
或者如果其他内容特殊关于不需要的行,例如它总是以相同的文字开头:
if(line.StartsWith(unwanted_prefix)) // then ignore
答案 1 :(得分:0)
将您的代码更改为此
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line.StartsWith("Count"))
break;
/....
}
如果最后一行以某个字符串
开头,则跳过