Benutzer mit den meisten Antworten
Die Werte in eine Texdatei in eine andere Texdatei in eine bestimmte Zeile ersetzen

Frage
-
Hallo,
ich möchte manche Werte in eine Textdatei in eine andere Texdatei in eine bestimmte Zeile ersetzten.
Beispiel:
Textdatei: A.txt:
X0(mm), Y0(mm), Z0(mm), Temp0(degC),
0.00, 0.00, 0.00, 22.85, 191.23
0.00, 0.00, 0.00, 23.18, 191.23
Texdatei: B.txt:
Baugeruest;Bau1;Bau2
2018-10-18 15:15:00;100;150Endergebniss Output
Testdatei C.txt:
Baugeruest;Bau1;Bau2
2018-10-18 15:15:00;22.85;191.23Könnt ihr mir dabei helfen?
vielen Dank
Antworten
-
Hi,
hier mal eine kleine Konsolendemo als Anregung:Imports System.IO Module Module1 Sub Main() Try Dim c As New Demo c.Execute() Catch ex As Exception Console.WriteLine(ex.Message) End Try Console.WriteLine("weiter mit Taste") Console.ReadKey() End Sub Friend Class Demo Private fileA As String = "c:\temp\a.txt" Private fileB As String = "c:\temp\b.txt" Private fileC As String = "c:\temp\c.txt" Friend Sub Execute() Dim i As Integer = 0 Using wrt As New StreamWriter(fileC) Using rdrA As New StreamReader(fileA) Using rdrB As New StreamReader(fileB) While Not rdrA.EndOfStream Dim lineA As String = rdrA.ReadLine If rdrB.EndOfStream Then Exit Sub Dim lineB As String = rdrB.ReadLine If i = 0 Then wrt.WriteLine(lineB) Else Dim inpA = lineA.Split(","c) Dim inpB = lineB.Split(";"c) wrt.WriteLine($"{inpB(0)};{inpA(3).Trim()};{inpA(4).Trim()}") End If i += 1 End While End Using End Using End Using End Sub End Class End Module
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Peter Fleischer Samstag, 3. November 2018 12:18
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Dienstag, 20. November 2018 08:49
Alle Antworten
-
Hi,
hier mal eine kleine Konsolendemo als Anregung:Imports System.IO Module Module1 Sub Main() Try Dim c As New Demo c.Execute() Catch ex As Exception Console.WriteLine(ex.Message) End Try Console.WriteLine("weiter mit Taste") Console.ReadKey() End Sub Friend Class Demo Private fileA As String = "c:\temp\a.txt" Private fileB As String = "c:\temp\b.txt" Private fileC As String = "c:\temp\c.txt" Friend Sub Execute() Dim i As Integer = 0 Using wrt As New StreamWriter(fileC) Using rdrA As New StreamReader(fileA) Using rdrB As New StreamReader(fileB) While Not rdrA.EndOfStream Dim lineA As String = rdrA.ReadLine If rdrB.EndOfStream Then Exit Sub Dim lineB As String = rdrB.ReadLine If i = 0 Then wrt.WriteLine(lineB) Else Dim inpA = lineA.Split(","c) Dim inpB = lineB.Split(";"c) wrt.WriteLine($"{inpB(0)};{inpA(3).Trim()};{inpA(4).Trim()}") End If i += 1 End While End Using End Using End Using End Sub End Class End Module
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Peter Fleischer Samstag, 3. November 2018 12:18
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Dienstag, 20. November 2018 08:49
-
Hi,
hier mal eine kleine Konsolendemo als Anregung:Imports System.IO Module Module1 Sub Main() Try Dim c As New Demo c.Execute() Catch ex As Exception Console.WriteLine(ex.Message) End Try Console.WriteLine("weiter mit Taste") Console.ReadKey() End Sub Friend Class Demo Private fileA As String = "c:\temp\a.txt" Private fileB As String = "c:\temp\b.txt" Private fileC As String = "c:\temp\c.txt" Friend Sub Execute() Dim i As Integer = 0 Using wrt As New StreamWriter(fileC) Using rdrA As New StreamReader(fileA) Using rdrB As New StreamReader(fileB) While Not rdrA.EndOfStream Dim lineA As String = rdrA.ReadLine If rdrB.EndOfStream Then Exit Sub Dim lineB As String = rdrB.ReadLine If i = 0 Then wrt.WriteLine(lineB) Else Dim inpA = lineA.Split(","c) Dim inpB = lineB.Split(";"c) wrt.WriteLine($"{inpB(0)};{inpA(3).Trim()};{inpA(4).Trim()}") End If i += 1 End While End Using End Using End Using End Sub End Class End Module
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und TricksDanke für deine Antwort. Ich kenne mich eher in VB6 aus. Daher tut es mir schon ab jetzt leid wenn ich dir unsinnige Fragen stelle. Ich versuche das Verfahren unter einen Button zu automatisieren. In der A.txt Datei sind die Trtennzeichen Leertasten. In der B.txt und C.txt Dateien sind es die Semicolons. Wie kann mann das am geschicksten machen? Vielen Dank
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim fileA As String = "c:\temp\a.txt" Dim fileB As String = "c:\temp\b.txt" Dim fileC As String = "c:\temp\c.txt" Dim i As Integer = 0 Using wrt As New StreamWriter(fileC) Using rdrA As New StreamReader(fileA) Using rdrB As New StreamReader(fileB) While Not rdrA.EndOfStream Dim lineA As String = rdrA.ReadLine If rdrB.EndOfStream Then Exit Sub Dim lineB As String = rdrB.ReadLine If i = 0 Then wrt.WriteLine(lineB) Else Dim inpA = lineA.Split(","c) Dim inpB = lineB.Split(";"c) wrt.WriteLine($"{inpB(0)};{inpA(3).Trim()};{inpA(4).Trim()}") End If i += 1 End While End Using End Using End Using End Sub
-
Hi,
in Deiner Ausgangsfrage gab es Kommata als Trennzeichen.0.00, 0.00, 0.00, 22.85, 191.23
Jetzt sind es auf einmal Leerzeichen?
… In der A.txt Datei sind die Trennzeichen Leertasten. In der B.txt und C.txt Dateien sind es die Semicolons. …
Setze einfach im Aufruf der Split-Methode das Trennzeichen, was wirklich dort steht.
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks