Найти и заменить текст в текстовом документе с помощью Visual Basic

Привет, я использую Visual Basic 2008 Express Edition, моя цель - прочитать весь текстовый файл .txt, который работает как шаблон, заменить все вхождения слова новым и сохранить этот новый измененный текст в новом .txt при нажатии клавиши. командная кнопка. Может кто-нибудь дать мне несколько советов?

Ответы на вопрос(4)

 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
 Felix Arturo Macias Ibarra12 апр. 2012 г., 21:03
Я делаю что-то неправильно?
 Felix Arturo Macias Ibarra12 апр. 2012 г., 21:02
Ошибка 1 & APOS; Открыть & APOS; не объявлено Функциональность файлового ввода-вывода доступна в «Microsoft.VisualBasic». Пространство имен. C: \ Users \ EMACFEL \ AppData \ Local \ Временные проекты \ WindowsApplication1 \ Form1.vb 32 9 WindowsApplication1
 12 апр. 2012 г., 21:20
добавить System IO, используя System.IO
 Felix Arturo Macias Ibarra12 апр. 2012 г., 20:54
Спасибо, попробую это
Решение Вопроса
Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar")
My.Computer.FileSystem.WriteAllText("C:\test2.txt", fileReader, False)

передать путь в качестве параметра и использовать метод Replace, чтобы заменить то, что вы хотите заменить. Для более сложного использования замены вы можете использовать регулярные выражения. Вы можете прочитать об этомВот.

Более короткая версия:

My.Computer.FileSystem.WriteAllText("C:\test2.txt", My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar"), False)
 Felix Arturo Macias Ibarra12 апр. 2012 г., 21:16
Так плохо, попробуйте это
 08 мар. 2016 г., 14:24
@ DNA180, что, вероятно, может быть достигнуто с помощью регулярных выражений.
 08 мар. 2016 г., 18:37
Все хорошо, я нашел это здесьhere.
 Felix Arturo Macias Ibarra12 апр. 2012 г., 21:25
Спасибо, я скопировал и вставил ваш код в событие нажатия кнопки, и когда я собираю программу, когда я нажимаю кнопку, замена текстового файла, который все еще заполнен foo, не выполняется.
 12 апр. 2012 г., 21:31
Понимаю. String fileReader содержит правильный текст, верно? Ваша проблема в том, что файл не обновляется. Мой код был создан только для чтения текста, запись еще не завершена, но я скоро обновлю свой код.

которую я написал, и использую ее для повторного использования кода. Я использую его, когда мне нужно создать класс или файл кода, который почти идентичен существующему. Это базовая программа для форм с четырьмя текстовыми полями и кнопкой, которая использует ту же команду, что и принятый ответ, за исключением того, что строки не имеют жесткого кода.

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

которую я делал, просто вырезал дерьмо, которое тебе не нужно.

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
 23 мая 2018 г., 17:55
Что это делает?

Ваш ответ на вопрос