C# Streamreader不是';t从我的文本文件返回正确的值,可以';我不知道如何正确地阅读我的文本文件#
我正在运行三个计数器,一个用于返回字符总数,一个用于返回.txt文件中的“|”字符数(总数)。一个用来读取我的文本文件中有多少行。我想我的计数器是错的,我不确定。在我的文本文件中有一些额外的“|”字符,但这是一个我以后需要修复的错误C# Streamreader不是';t从我的文本文件返回正确的值,可以';我不知道如何正确地阅读我的文本文件#,c#,datagridview,counter,streamreader,streamwriter,C#,Datagridview,Counter,Streamreader,Streamwriter,我正在运行三个计数器,一个用于返回字符总数,一个用于返回.txt文件中的“|”字符数(总数)。一个用来读取我的文本文件中有多少行。我想我的计数器是错的,我不确定。在我的文本文件中有一些额外的“|”字符,但这是一个我以后需要修复的错误 The Message Boxes show "Lines = 8" "Entries = 8" "Total Chars = 0" 不确定它是否有用,但.txt文件是使用stream
The Message Boxes show
"Lines = 8"
"Entries = 8"
"Total Chars = 0"
不确定它是否有用,但.txt文件是使用streamwriter编译的,我将datagridview保存为字符串以创建输出。这些功能似乎一切正常
这是我正在阅读的文本文件的副本
这是代码。
希望你们能在这里找到bug。抱歉,如果格式不规范,我是自学的,不上课。任何额外的建议都是受欢迎的,尽可能诚实和严厉,不会伤害感情
总之
为什么这个程序没有从我正在使用的文本文件中读取正确的值?不完全确定我是否完全了解您要做的事情,所以如果我关闭,请更正我,但是如果您只是尝试获取文件的行数、管道(|)数和字符数,那么下面应该会告诉您
var lines = File.ReadAllLines(load_dialog.FileName);
int lineCount = lines.Count();
int totalChars = 0;
int totalPipes = 0; // number of "|" chars
foreach (var s in lines)
{
var entries = s.Split('|'); // split the line into pieces (e.g. an array of "Matthew", "Walker", etc.)
totalChars += s.Length; // add the number of chars on this line to the total
totalPipes = totalPipes + entries.Count() - 1; // there is always one more entry than pipes
}
Split()所做的就是将整行拆分为字符串中各个字段的数组。由于您似乎只关心管道的数量,而不关心字段的数量,因此除了通过获取字段的数量并减去一个来确定管道的数量(因为您没有在每一行上都有一个尾随管道)之外,我对它做的不多。您可以用一种更简单的方式读取文件:
var lines=file.ReadAllLines(load\u dialog.FileName); foreach(vars in line){var entries=s.Split(“|”);/*…*/}
那么,问题解决了吗?天哪,我不知道我能做到!谢谢老兄,我很快就要在这里试用了,谢谢你的回复!编辑了我的帖子以显示我现在有多困惑。。。我确实喜欢@Vlad正在做的事情,只是希望我知道更多关于如何使用拆分(“|”);那肯定有用,谢谢你!我最终还是想开始使用分割数组中的字段,我只是很固执,我喜欢钻研阅读/学习中的大部分问题。我将尝试将条目拆分为它们自己的值,然后将它们放入datagridview中,但稍后我将进入代码的这一部分。
private void btnLoadList_Click(object sender, EventArgs e)
{
var loadDialog = new OpenFileDialog
{
InitialDirectory = Convert.ToString(Environment.SpecialFolder.MyDocuments),
Filter = "Text (*.txt)|*.txt",
FilterIndex = 1
};
if (loadDialog.ShowDialog() != DialogResult.OK) return;
using (new StreamReader(loadDialog.FileName))
{
var lines = File.ReadAllLines(loadDialog.FileName);//Array of all the lines in the text file
foreach (var assocStringer in lines)//For each assocStringer in lines (Runs 1 cycle for each line in the text file loaded)
{
var entries = assocStringer.Split('|'); // split the line into pieces (e.g. an array of "Matthew", "Walker", etc.)
var obj = (Associate) _bindingSource.AddNew();
if (obj == null) continue;
obj.FirstName = entries[0];
obj.LastName = entries[1];
obj.AssocId = entries[2];
obj.AssocRfid = entries[3];
obj.CanDoDiverts = entries[4];
obj.CanDoMhe = entries[5];
obj.CanDoLoading = entries[6];
}
}
}
var lines = File.ReadAllLines(load_dialog.FileName);
int lineCount = lines.Count();
int totalChars = 0;
int totalPipes = 0; // number of "|" chars
foreach (var s in lines)
{
var entries = s.Split('|'); // split the line into pieces (e.g. an array of "Matthew", "Walker", etc.)
totalChars += s.Length; // add the number of chars on this line to the total
totalPipes = totalPipes + entries.Count() - 1; // there is always one more entry than pipes
}