Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 计算文本文件中的特定行(以数字开头)_Vb.net - Fatal编程技术网

Vb.net 计算文本文件中的特定行(以数字开头)

Vb.net 计算文本文件中的特定行(以数字开头),vb.net,Vb.net,作为我在VB.net中构建的应用程序的一部分,我尝试导入多个txt文件,并能够计算该文件中以特定数字(例如1)开头的行数,并将其显示在消息框中 以下是我目前的代码: OpenFileDialog1.DefaultExt = "txt" OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" If OpenFileDialog1.ShowDialog = Windows.Forms.Dia

作为我在VB.net中构建的应用程序的一部分,我尝试导入多个txt文件,并能够计算该文件中以特定数字(例如1)开头的行数,并将其显示在消息框中

以下是我目前的代码:

    OpenFileDialog1.DefaultExt = "txt"
    OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        For Each File In OpenFileDialog1.FileNames
            My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName)
                For Each fileName In OpenFileDialog1.FileNames
                   For Each line As String In System.IO.File.ReadLines(fileName)
                   Dim Linecount = line.count
                        If line.StartsWith("1") Then
                        MsgBox(LineCount)
                        End If
                   Next
                Next
        Next           

上面的代码不起作用,因为它给了我错误的行数。在我的txt文件中,我只有一行以“1”开头。

这里只显示每行中的字符数:

For Each line As String In System.IO.File.ReadLines(fileName)
     Dim Linecount = line.Count ' Number of characters
您可以使用LINQ获取以1开头的行数:

Dim lineWithOne = File.ReadLines(fileName).Count(Function(l) l.StartsWith("1"))
如果您不想或不能使用LINQ,这是经典的方法:

Dim lineWithOne = 0
For Each line As String In System.IO.File.ReadLines(fileName)
    If line.StartsWith("1") Then lineWithOne += 1
Next

我用了经典的方法,但我有一个问题。。。如果txt文件包含多个以“1”开头的行,则消息框每行显示一次。例如,它找到第一行并显示消息框。我按下OK,然后第二行再次显示。我想知道导入的所有txt文件的总行数。那么为什么要在循环中显示messagebox呢?只需在那里计数,然后显示结果。谢谢Tim,如果你导入一个文件,它就可以工作了。在多个文件中计数如何?取决于您的要求。是否要对以“1”开头的所有文件的计数求和?然后只需增加计数器,直到清点完所有文件。或者您想为每个文件获得一个结果,然后使用多个变量。