C# Streamreader不是';t从我的文本文件返回正确的值,可以';我不知道如何正确地阅读我的文本文件#

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

我正在运行三个计数器,一个用于返回字符总数,一个用于返回.txt文件中的“|”字符数(总数)。一个用来读取我的文本文件中有多少行。我想我的计数器是错的,我不确定。在我的文本文件中有一些额外的“|”字符,但这是一个我以后需要修复的错误

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
}