使用 streamreader(如果找到特殊字符,如何跳过一行)?

Using streamreader (how do I skip a line if a special character is found)?

我目前正在使用 streamreader 和 filestream 读取 txt 文件并将其转储到列表框中。此文本文件中每隔一行包含一个特殊字符,即大括号。例如{ 或 }

我想知道如何跳过将所有包含“{}”的行读入我的列表框。但我还是喜欢流式传输文本文件的其余部分。

目前,这就是我在代码中使用的内容。但显然它仍然在写带有花括号的行。任何帮助将不胜感激。

private void ReadUsingStreamReader()
    {
        char[] chars = { '{', '}' }; 
        string characters = new string(chars);
        string FileName = "Path To File"; 
        using (FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read))
        {           
            using (StreamReader sr = new StreamReader(fs))
             {
                while (!sr.EndOfStream)
                {                    
                    string  line =sr.ReadToEnd();                     
                    string[] readText = File.ReadAllLines(FileName);
                        foreach(string FileText in readText)
                        {
                            if (FileText.Contains(characters))
                            {
                                //Do nothing
                            }
                            else
                            {
                              listBox1.Items.Add(FileText);
                            }

                        }                         
                }                            
             }
        }

好的,我更改了代码,这里似乎工作正常。

private void ReadUsingStreamReader()
    {
        string FileName = "Path To File";
        char[] chars = { '{', '}' }; 
        string characters = new string(chars);           

            using (StreamReader sr = new StreamReader(FileName))
            {
                while (!sr.EndOfStream)
                {
                    string line = sr.ReadToEnd();

                    string[] readText = File.ReadAllLines(FileName);
                    foreach (string FileText in readText)
                    {
                        foreach (char c in characters)
                        {

                            if (FileText.Contains(c)) continue;
                            listBox1.Sorted = true;
                            listBox1.Items.Add(FileText);
                            break;                                       

                        }

                    }
                }

            }

      }               

您可以分别检查每个字符:

foreach(string FileText in readText)
{
    foreach(char c in chars) 
        if (FileText.Contains(c)) continue;
    ....
}

此外,我会逐行读取流...

string  line = sr.ReadLine();