Find and replace text in a txt document using Visual Basic

后端 未结 4 1023
情书的邮戳
情书的邮戳 2020-12-21 00:27

Hi Im using Visual Basic 2008 Express Edition, my goal is to read an entire .txt file that works as a template and replace all ocurances of a word with a new one and save th

相关标签:
4条回答
  • 2020-12-21 00:48

    I pulled this out of a a program I was making, just cut out the crap you don't need.

    Private Sub UPDATECODES_Click(sender As Object, e As EventArgs) Handles UPDATECODES.Click
        Dim NEWCODE As String = NEWCODEBOX.Text
        Dim CC As String = CURRENTCODE.Text
        Dim oldcode As String
        Dim codelines(0 To 1) As String
        Dim olddate As String
    
        Using r1 As New System.IO.StreamReader(CODEDIR & "d.dat")
            olddate = r1.ReadToEnd
        End Using
    
        Using r2 As New System.IO.StreamReader(CODEDIR & "oc.dat")
            oldcode = r2.ReadToEnd
        End Using
    
        If System.IO.File.Exists(CODEDIR & "new code.txt") Then
            System.IO.File.Delete(CODEDIR & "new code.txt")
        End If
    
        If System.IO.File.Exists(CODEDIR & "CC.DAT") Then
            If IO.File.Exists(CODEDIR & "oc.dat") Then
                IO.File.Delete(CODEDIR & "OC.DAT")
            End If
    
            My.Computer.FileSystem.RenameFile(CODEDIR & "CC.DAT", "OC.DAT")
            Dim FILESTREAM As System.IO.FileStream
            FILESTREAM = New System.IO.FileStream(CODEDIR & "CC.DAT", System.IO.FileMode.Create)
            FILESTREAM.Close()
        End If
    
        Using WRITER As New System.IO.StreamWriter(CODEDIR & "CC.DAT")
            WRITER.WriteLine(NEWCODE)
        End Using
    
        Dim currentlines(0 To 1) As String
        Dim a As Integer
        Dim TextLine(0 To 1) As String
        a = 0
    
        Using sr As New System.IO.StreamReader(CODEDIR & "internet code.txt")
            While Not sr.EndOfStream
                ReDim codelines(0 To a)
                codelines(a) = sr.ReadLine()
                codelines(a) = codelines(a).Replace(CURRENTCODE.Text, NEWCODE)
                codelines(a) = codelines(a).Replace(olddate, DATEBOX1.Text & " - " & DATEBOX2.Text)
                Dim newfile As String = (CODEDIR & "new code.txt")
                Using sw As New System.IO.StreamWriter(newfile, True)
                    sw.WriteLine(codelines(a))
                End Using
                a = a + 1
            End While
        End Using
    
        Using sw2 As New System.IO.StreamWriter(CODEDIR & "d.dat")
            sw2.WriteLine(date1 & " - " & date2)
        End Using
    
        System.IO.File.Delete(CODEDIR & "internet code.txt")
        My.Computer.FileSystem.RenameFile(CODEDIR & "new code.txt", "internet code.txt")
        CURRENTCODE.Text = NEWCODE
    End Sub
    
    0 讨论(0)
  • 2020-12-21 00:50

    I have a small program I wrote that I use for reusing code. I use it when I need to create a class, or code file, that is almost identical to an existing one. It is a basic form program with four text boxes and a button that uses the same command as the accepted answer except the strings are not hard coded.

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
      Dim source As String = txtSource.Text
      Dim destination As String = txtDestination.Text
      Dim oldText As String = txtOldText.Text
      Dim newText As String = txtNewText.Text
    
      My.Computer.FileSystem.WriteAllText(destination, My.Computer.FileSystem.ReadAllText(source).Replace(oldText, newText), False)
    
    End Sub
    
    0 讨论(0)
  • 2020-12-21 00:51
    Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar")
    My.Computer.FileSystem.WriteAllText("C:\test2.txt", fileReader, False)
    

    So you should use the ReadAllText method of the FileSystem, pass the path as parameter and use the Replace method to replace what you want to replace. For more advanced usages of replace you can use regular expressions. You can read about that here.

    Shorter version:

    My.Computer.FileSystem.WriteAllText("C:\test2.txt", My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar"), False)
    
    0 讨论(0)
  • 2020-12-21 01:06

    try the following example I hope it helps

     Dim lOpenFile As Long
     Dim sFileText As String
     Dim sFileName As String
    
    sFileName = "C:\test.txt"
    
     'open the file and read it into a variable
     lOpenFile = FreeFile
     Open sFileName For Input As lOpenFile
     sFileText = Input(LOF(lOpenFile), lOpenFile)
     Close lOpenFile
    
    'change 'John Doe' to 'Mary Brown'
     sFileText = Replace(sFileText, " John Doe ", " Mary Brown ")
    
     'write it back to the file
     lOpenFile = FreeFile
     Open sFileName For Output As lOpenFile
     Print #lOpenFile, sFileText
     Close lOpenFile
    
    0 讨论(0)
提交回复
热议问题