【问题标题】:Read every 5th line until the end of the text file每 5 行读取一次,直到文本文件结束
【发布时间】:2015-10-24 22:06:03
【问题描述】:

您好,请给我一个示例,说明如何将文本文件通读到末尾并将每 5 行读取为字符串?我知道如何使用

读取文本文件中的特定行

line = System.IO.file.readAllLines(filepath)(linenum)

并且还使用流读取器读取每一行等。

但我想浏览整个文本文件并挑选出每个特定数量的行。很确定它与循环有关,但我还不太清楚。

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    由于文件不是基于行的,因此您需要阅读所有行并挑选出您想要的行。

    您可以使用 Where 方法和为您提供项目索引的重载,并使用 Mod 运算符来确定每五行的位置:

    Dim lines As String() = _
      System.IO.File.ReadLines(filepath).Where(Function(line, i) i Mod 5 = 0).ToArray()
    

    您比较表达式以确定您获得哪些行的数字。 i Mod 5 = 0 从第一行开始,然后从那里每隔 5 行开始,而i Mod 5 = 4 从第 5 行开始,然后从那里开始每隔 5 行。

    ReadLines 方法比 ReadAllLines 更好,因为它不会先将所有行读入内存,而是返回一个枚举器,以便您可以在读取行时对其进行处理。)

    【讨论】:

    • 既然数组的索引为零,不应该是(i + 1) Mod 5 = 0吗?
    • @roryap:这取决于“每 5 次”的解释。我只是添加了一个关于它是如何工作的解释。
    • @Guffa 您对ReadLinesReadAllLines 的补充是正确的,但完全被ToArray 的使用所击败,ToArray 将在“现场”急切地处理操作
    • @Sehnsucht: 一点也不,最后有ToArray 只会将最终结果实现为数组,它不会导致文件中的所有行在处理之前都被读入内存.
    猜你喜欢
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多