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

时间:2015-02-18 15:29:46

标签: c# file filter contains streamreader

我目前正在使用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;                                       

                        }

                    }
                }

            }

      }               

1 个答案:

答案 0 :(得分:0)

您可以分别检查每个角色:

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

另外,我一行一行地从流中读取...

string  line = sr.ReadLine();