【问题标题】:read line by line and character by character c#逐行逐字符读取c#
【发布时间】:2015-10-22 20:49:59
【问题描述】:

所以我对所有 c# 的流式阅读器方法有点不知所措。我是否可以只阅读一行的第一个字母,然后如果该行以我指定的字符开头,然后单独阅读所有字母?我遇到困难的部分是如何让它在读取该行的第一个字符时跳过该行。如果我逐个字符地阅读它,直到下一个 cr/lf 循环工作吗?我不能使用 readline(),因为有些行我需要逐个字符地读取,而 readline() 会在 lf 处停止,我只需要在 cr/lf 对期间将它转到下一行。

【问题讨论】:

  • 嗨,Saif,你能告诉我们一些你尝试过的代码吗?
  • 为什么不简单地将文本逐行读取到字符串变量中,同时检查该字符串中的第一个字符。如果找到了您想要的字符,请对该变量中的字符串执行某些操作,否则,忽略它并继续?
  • 我试过用伪代码编写它,但我想我一开始就卡住了,所以我没有走远。我可以读取每一行(不能使用 readline() ,因为当它碰到“LF”时会转到下一行,我需要它包含单个“LF”作为该行的一部分,并且只有在它击中了“CR/LF”对。我想我只是太努力地使这个程序快速高效,但我认为现在这超出了我的范围。我想我会阅读“CR/LF”中的每个字符,并且如果该字符串数组的第一个值是我不想要的值之一,那么它什么也不做

标签: c# newline streamreader


【解决方案1】:

类似下面的东西应该可以解决问题。

List<string> lines = new List<string>();

using (var file = new StreamReader(fileName))
{
    string line = string.empty;
    while ((line = file.ReadLine()) != null)
    {
        if (line[0] == chr)
        {
            lines.Add(line);
        }
    }
}

Console.WriteLine(lines.Count);

【讨论】:

    【解决方案2】:

    你的问题不清楚,但是,我猜你想要这样的东西(跳过以一些特殊字符开头的行并处理其余的行

    foreach(var line in File.ReadLines(filename).Where(line=> !line.StartsWith("#")))
    {
        //Process(line);
    }
    

    【讨论】:

      【解决方案3】:

      使用StreamReader.Read method

      在变量中保留对先前读取的字符的引用,以识别您是否找到了 CR/LF 对。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        相关资源
        最近更新 更多