Ebenfalls String durchsuchen nur etwas schwerer...

Vamp7771

Mitglied
Hi, Leute.

Ich möchte einen Text auslesen (das mache ich mit StreamReader), dann möchte ich diesen Text in eine Datei (TXT) schreiben. (Das mache ich mit StreamWriter)
Alles an sich okay, wenn da nicht nur diese Kleinigkeit wäre:

Der Text ist lang und enthält Hochkommas (') (ist glaub ich chr47 oder chr48).
Ich muss nun jedes Hochkomma finden und an der Stelle ein Zeilenumbruch( vbcrlf) einfügen.
Das versuche ich nun mit dem "replace" befehl. left und schrittweite 1.
Er scheint dies auch zu machen, nur dauert es über 4 Std! den Text zu durchkämmen, da dieser ca. hm..500 Zeilen enthält und auch eine Zeile ca. 400 Zeichen.

Hat jemand einen Tipp für mich wie ich das richtig anstellen kann, ohne eine Wartezeit von ca. 4 Std. in Kauf nehmen zu müssen :)

Kurz : Test > lesen ; Text > schreiben, nur die im Text enthaltenen Hochkommas entfernen und an dessen Stelle einen Zeilenumbruch durchführen. >fertig<

Bitte um Hilfe Eurerseits!

Danke- Vamp
 

zovax

Erfahrenes Mitglied
Hallo,

Code:
using (System.IO.StreamReader sr = new System.IO.StreamReader("C:\\input.txt")) {
                using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\output.txt")) {
                    sw.Write(System.Text.RegularExpressions.Regex.Replace(sr.ReadToEnd(), "'", "\r\n"));
                }
            }

Eine Zeitverzoegerung ist bei mir mit einer Datei von 1000 Zeilen, 500 Zeichen per Zeile und 30 Hochkommas per Zeile nicht spuerbar..
 

Vamp7771

Mitglied
Vielen Dank, damit funktionier es einwandfrei, und in sekundenschnelle

Der aktuelle Code:

Code:
Imports System
Imports System.IO

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As   System.EventArgs) Handles Button1.Click
        Dim Textlesen As System.IO.StreamReader = New System.IO.StreamReader("C:\blabla.txt")
        Dim TextSchreiben As System.IO.StreamWriter = New System.IO.StreamWriter("C:\blablaneu.txt")
        
        TextSchreiben.Write(System.Text.RegularExpressions.Regex.Replace(Textlesen.ReadToEnd, "'", vbCrLf))
        Textlesen.Close()
        Textlesen = Nothing
        TextSchreiben.Close()
        TextSchreiben = Nothing
    End Sub
End Class


und nun der alte Code, mit dem es Stundenlang dauerte:


Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
        Dim Textlesen As StreamReader = New StreamReader("c:\blabla.txt")
        Dim TextSchreiben As StreamWriter = New StreamWriter("c:\blablaneu.txt")
        Dim NeuerText As String
        Dim AlterText As String
        Dim N As Long

NeuerText = TextSchreiben        
AlterText = TextLesen.ReadToEnd()
        Textlesen.Close()
        TextLesen = Nothing

        AlterText = Replace(AlterText,"'", vbCrLf)
        For N = 1 To Len(AlterText) Step 1
            NeuerText = NeuerText & Mid(AlterText, N, 1) & vbCrLf
        Next

        TextSchreiben.Write(NeuerText)
        TextSchreiben.Close()
        TextSchreiben = Nothing

    End Sub

Woran könnte es liegen, dass die beiden sich so zeitlich unterscheiden?
Am "System.Text.RegularExpressions.Regex.Replace"?

Vielen Dank nochmals, jetzt kann ich mein Programm endlich wieder weiterschreiben!

Euer Vamp