Vb.net 从一个文本文件提取特定行到另一个文本文件

Vb.net 从一个文本文件提取特定行到另一个文本文件,vb.net,Vb.net,我想从一个文本文件提取一些特定的行到另一个文本文件。我正在使用以下代码 Imports System.IO Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Tr As IO.TextReader = System.IO.File.OpenText("C:

我想从一个文本文件提取一些特定的行到另一个文本文件。我正在使用以下代码

    Imports System.IO



Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim Tr As IO.TextReader = System.IO.File.OpenText("C:\Assignment.txt")
        For c As Integer = 1 To 10

            If c = 7 Then
                Dim MyFileLine As String = Split(Tr.ReadToEnd(), vbCrLf)(c) & vbCrLf
                Tr.Close()



                Dim TW As System.IO.TextWriter
                'Create a Text file and load it into the TextWriter 
                TW = System.IO.File.CreateText("C:\Assignment1.txt")
                TW.WriteLine(MyFileLine)
                'Flush the text to the file 
                TW.Flush()
                'Close the File 
                TW.Close()
            End If

        Next c
    End Sub
End Class

但是这段代码只提取第7行,我想提取第8行、第9行、第10行、第14行、第15行、第16行。请指导我正确的解决方案。提前谢谢。

这里似乎有几个问题。我将纠正这些错误,然后解释如下:

Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim currentLine As String
        Dim lineCounter As Integer = 1
        Dim lineNumbersRequired As List(Of Integer) = New List(Of Integer)
        lineNumbersRequired.Add(7)
        lineNumbersRequired.Add(8)
        lineNumbersRequired.Add(9)
        lineNumbersRequired.Add(10)
        lineNumbersRequired.Add(14)
        lineNumbersRequired.Add(15)
        lineNumbersRequired.Add(16)

        Dim TW As System.IO.TextWriter
        'Create a Text file and load it into the TextWriter 
        TW = System.IO.File.CreateText("C:\Assignment1.txt")

        Using Tr As IO.TextReader = New IO.StreamReader("C:\Assignment.txt")
            While Not Tr.EndOfStream
                If lineNumbersRequired.Contains(lineCounter) Then
                    Dim MyFileLine As String = Split(currentLine, vbCrLf)(c) & vbCrLf
                    TW.WriteLine(MyFileLine)
                End If
                lineCounter = lineCounter + 1
            End While
        End Using

        TW.Flush()
        'Close the File 
        TW.Close()

    End Sub
End Class
注意:代码未经测试,但如果确实出现一些编译错误,则应该非常接近

好吧,那就简单介绍一下我在这里做的事情:

  • 将For循环更改为while,因为For循环从1运行到10,所以即使它工作,也不会读取超过文件中第10行的内容。所以我把它改为一个while循环,当TextReader读取了文件中的所有行时,该循环将结束。此外,从文件中读取的当前行已添加到名为currentLine的新变量中
  • 新的currentLine变量现在用于填充写入文件的行
  • 我已经添加了一个整数列表,它将保存您想要保留的行号,然后在while循环中,我有一个计数器,它在处理每一行时对每一行进行计数,如果这个计数器在您想要保存到输出文件中的行号列表中,那么它将输出当前行

  • 让我知道你进展如何,如果你需要更多的解释,请询问。

    这里似乎有几个问题。我将纠正这些错误,然后解释如下:

    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            Dim currentLine As String
            Dim lineCounter As Integer = 1
            Dim lineNumbersRequired As List(Of Integer) = New List(Of Integer)
            lineNumbersRequired.Add(7)
            lineNumbersRequired.Add(8)
            lineNumbersRequired.Add(9)
            lineNumbersRequired.Add(10)
            lineNumbersRequired.Add(14)
            lineNumbersRequired.Add(15)
            lineNumbersRequired.Add(16)
    
            Dim TW As System.IO.TextWriter
            'Create a Text file and load it into the TextWriter 
            TW = System.IO.File.CreateText("C:\Assignment1.txt")
    
            Using Tr As IO.TextReader = New IO.StreamReader("C:\Assignment.txt")
                While Not Tr.EndOfStream
                    If lineNumbersRequired.Contains(lineCounter) Then
                        Dim MyFileLine As String = Split(currentLine, vbCrLf)(c) & vbCrLf
                        TW.WriteLine(MyFileLine)
                    End If
                    lineCounter = lineCounter + 1
                End While
            End Using
    
            TW.Flush()
            'Close the File 
            TW.Close()
    
        End Sub
    End Class
    
    注意:代码未经测试,但如果确实出现一些编译错误,则应该非常接近

    好吧,那就简单介绍一下我在这里做的事情:

  • 将For循环更改为while,因为For循环从1运行到10,所以即使它工作,也不会读取超过文件中第10行的内容。所以我把它改为一个while循环,当TextReader读取了文件中的所有行时,该循环将结束。此外,从文件中读取的当前行已添加到名为currentLine的新变量中
  • 新的currentLine变量现在用于填充写入文件的行
  • 我已经添加了一个整数列表,它将保存您想要保留的行号,然后在while循环中,我有一个计数器,它在处理每一行时对每一行进行计数,如果这个计数器在您想要保存到输出文件中的行号列表中,那么它将输出当前行

  • 让我知道你进展如何,如果你需要更多的解释,请询问。

    我已经更改了代码,并使用语句实现了一个
    ,以清除
    文本阅读器
    。对不起,我是从C#转换过来的!好的,现在让我来讨论另一个问题,,,如果我想从某个html页面复制某些行,那么我应该编写什么代码???这真的是另一个问题,因为它不像这个问题那么直接。我会发布另一个问题,并将此问题标记为已回答/投票,如果它有助于解决您原来的问题。我已更改了代码,并使用
    语句实现了一个
    ,以在之后清除
    文本阅读器
    。对不起,我是从C#转换过来的!好的,现在让我来讨论另一个问题,,,如果我想从某个html页面复制某些行,那么我应该编写什么代码???这真的是另一个问题,因为它不像这个问题那么直接。我会发布另一个问题,并将这个问题标记为已回答/投票,如果它有助于解决您原来的问题。