如何检查Streamread中每行的每个第一个字符?

时间:2019-06-10 00:21:55

标签: c#

由于我是该语言的新手,所以我目前正在努力解决C#问题。

情况:

我有一个文本文件。在此文本文件内,将有一个格式化的文本。 我必须使用streamreader在C#中打开此文件,到目前为止,我还是设法做到了。 然后,我必须分别检查每一行,也是(我认为)我这样做了。 但是现在,我想检查这一行中的第一个字符,无论是“ S”还是“ B”。

如果第一个字符是“ B”,我将不得不使用其他类来格式化listbox中的输出。

此处包含文本文件的屏幕截图:https://imgur.com/pho3j5Y

        String line = ""; 
        ...
    private void MenuItem_Click_1(object sender, RoutedEventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        string startfolder = 
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

        openFileDialog.InitialDirectory = startfolder;
        openFileDialog.Filter = "txt Files| *.txt";

        if (openFileDialog.ShowDialog() == true)
        { // user clicks open
            StreamReader sr = new StreamReader(openFileDialog.FileName);
            while(line != null)
            {
                line = sr.ReadLine();
                if (line[0].Equals("B") || line[0].Equals("b"))
                {
                    performListBox.Items.Add(line);

                }

                   //performListBox.Items.Add(line);


            }
            sr.Close();

        }

    }

当前,我得到的响应是line = null。它告诉我我正在以某种方式处理字符。

1 个答案:

答案 0 :(得分:0)

在第一个循环从文件获取任何行之前,您正在读取line变量。并在Equal()函数上使用==并使用单引号'' 更改此区域:

while(line != null)
        {
            line = sr.ReadLine();
            if (line[0].Equals("B") || line[0].Equals("b"))
            {
                performListBox.Items.Add(line);

            }

               //performListBox.Items.Add(line);


        }

对此

line = sr.ReadLine();
while(line != null)
{
    if (line[0] =='B') || line[0] == 'b'))
    {
        performListBox.Items.Add(line);
    }
        //performListBox.Items.Add(line);
    line = sr.ReadLine();
}