由于我是该语言的新手,所以我目前正在努力解决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。它告诉我我正在以某种方式处理字符。
答案 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();
}