【问题标题】:Count lines before specified string of Text File? In VB在指定的文本文件字符串之前计算行数?在 VB 中
【发布时间】:2015-08-13 02:32:46
【问题描述】:

有没有办法计算文本文件中特定行/字符串之前的行数。 例如:

1

2

3

4

5

6

7

8

9

假设我想计算'8'之前的行数...... 我该怎么做?

谢谢!

【问题讨论】:

  • 你已经尝试过什么?任何代码示例?收到的输出是什么?预期什么?

标签: vb.net file text count lines


【解决方案1】:

希望这实际上是您正在寻找的, 它将从指定的文件中读取所有行。然后找到 IndexOf 特定行(searchText),然后将1 添加到它将为您提供所需的计数,因为index is0based.

    Dim lines = File.ReadAllLines("f:\sample.txt")
    Dim searchText As String = "8"
    msgbox(Array.IndexOf(lines, searchText) + 1)

【讨论】:

  • 为什么不呢?我将包括它并为您更新我的答案
【解决方案2】:

这是另一个使用List.FindIndex() 的示例,它允许您传入Predicate(T) 来定义如何进行匹配:

    Dim fileName As String = "C:\Users\mikes\Documents\SomeFile.txt"
    Dim lines As New List(Of String)(File.ReadAllLines(fileName))
    Dim index As Integer = lines.FindIndex(Function(x) x.Equals("8"))
    MessageBox.Show(index)

在上面的示例中,我们正在寻找与“8”的完全匹配,但是对于更复杂的场景,您可以随意匹配谓词。只需让函数(谓词)为您想要匹配的内容返回 True。

例如,包含“魔法”的一行:

    Function(x) x.ToLower().Contains("magic")

或以“FirstStep”开头的行:

    Function(x) x.StartsWith("FirstStep")

谓词不必是简单的字符串函数,它可以根据您的喜好复杂。这是一个可以找到以“UnicornFarts”结尾的字符串,但仅在星期三并且记事本当前打开时:

    Function(x) DateTime.Today.DayOfWeek = DayOfWeek.Wednesday AndAlso Process.GetProcessesByName("notepad").Length > 0 AndAlso x.EndsWith("UnicornFarts")

你懂的……

使用列表而不是数组非常适合需要在将行写回文件之前删除和/或插入内容的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多