C# 处理文本文件

标签 c# visual-studio console-application text-files

我已经为此工作了几个小时,我已经完成了我正在处理的最后一部分。我需要弄清楚如何限制循环从文本行上定义的范围中获取值。就像第 1-5 行,然后是第 6-10 行,等等。

TextReader tr = new StreamReader("values.txt");
        for (int i = 0; i <= 5; i++)
        {
            for (int a = 0; a <= 5; a++)
            {
                line = tr.ReadLine();
                **while ((line = tr.ReadLine()) != null)**
                    for (a = 0; a <= 5; a++){
                        ln = tr.ReadLine();
                        if (ln != null){
                            value = int.Parse(ln);
                            if (value > max)
                                max = value;
                            if (value < min)
                                min = value;}
                    }
                Console.WriteLine(tr.ReadLine());
                if (i % 5 == 0)
                    Console.WriteLine("The max is" + max);
                if (i % 5 == 0)
                    Console.WriteLine("The min is" + min);
                if (i % 5 == 0)
                    Console.WriteLine("-----First 5");
            }

我准备上床 sleep 了,但不想被打败。任何以正确方式进行的插入都将不胜感激。

最佳答案

您可以使用 LINQ 的 Skip 轻松实现此目的 docs 采取 docs 方法。只需使用 File.ReadAllLines 阅读您的文本 docs 然后根据需要跳过并采取:

var lines = File.ReadAllLines("values.txt").Skip(5).Take(5);
//lines now has lines 6-10

如果您多次执行此操作,我建议将其拆分为文件访问和 linq:

var allLines = File.ReadAllLines("values.txt")
var lines6To10 = allLines.Skip(5).Take(5);

... // Later on 

var lines21To25 = allLines.Skip(20).Take(5)

至于你的代码的其余部分.. 看起来你正在尝试从行中找到最小值/最大值,它们应该只包含整数。

var min = int.MaxValue;
var max = int.MinValue;
foreach(var line in lines)
{
   var value = int.Parse(line);
   if(value > max)
      max = value;
   if(value < min)
      min = value;
}

这可以在行示例中看到:http://rextester.com/rundotnet?code=SHP19181 (注意加载数字的不同方式,因为 rextester 不能从文件加载。虽然原理是一样的)

关于C# 处理文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710768/

相关文章:

c# - Any() 对 IEnumerable 状态的影响

c# - BMP 中的字节到位得到 RGB

c++ - 如何在 Visual Studio (C++) 中找到应用程序的入口点

c# - 如何使用UWP访问azure表存储?

c++ - 更新和多个控制台窗口

c# - 确定文件是否为有效的图像格式

c# - 在Linux的同一台计算机上运行多个实例时的.Net Core垃圾回收

visual-studio - 在 Visual Studio 2010 中添加 Web 引用以指向 Sharepoint 2007 站点

c# - 最大化控制台窗口 - C#

c# - 如何在 ILogger 中刷新应用程序洞察