Mehrere Replace Möglichkeiten

Vamp7771

Mitglied
Hallo,

ich arbeite mit dem StreamReader und dem StreamWriter (Imports System / Imports System.IO)

Frage, kann ich gleich mit nur einem StreamReader auch mehrere verschiedene Replace Funktionen durchführen?

Beispiel:

Code:
Dim lesen As StreamReader = New StreamReader("c:\kuerzel.txt")
        Dim schreiben As StreamWriter = New StreamWriter("c:\versuch.txt")
        Dim altertext As String
        Dim neuertext As String

altertext = lesen.ReadToEnd.Replace("LIN", "Line Item Number")
        altertext = lesen.ReadToEnd.Replace("QTY", "Quantity")


So gehts leider nicht, aber ich will nicht jedesmal einen neuen Streamreader anlegen...
Mit Kommatrennung in nur einem Streamreader, funktioniert es leider auch nicht.

Gibts einen Trick o.ä. dies zu meistern?
(Ich bräuchte ca. 9 StreamReader wenn ich nicht irgendwie anders mache)

Euer Vamp
 

mage

Erfahrenes Mitglied
Das Replace kommt nicht von den Streamreader, sondern von der String Klasse (bzw. Datentyp), welche die Methode Replace besitzt.
Du kannst eine temporäre Stringvariable verwenden, um mehrere Ersetzungen durchzuführen.

Code:
    Dim Zwischen As String
    Zwischen = lesen.ReadToEnd()
    Zwischen = Zwischen.Replace(..)
    Zwischen = Zwischen.Replace(..)
    ..
Allerdings ist diese Methode nicht sehr Resourcenschonend, da bei jeden Replace ein neues Stringobjekt erzeugt wird, was Zeit und Speicheraufwendig ist.
 

Vamp7771

Mitglied
Hallo,

danke für den Tipp.

Ich bekomme eine Fehlermeldung, dass der Wert nicht NULL sein darf und zwar beim erster "zwischen" Definition (im code ROT hinterlegt)

Code:
 Dim zwischen As String
        zwischen = lesen.ReadToEnd()
        zwischen = zwischen.Replace(LIN, "Line Item Number")
        zwischen = zwischen.Replace(QTY, "Quantity")
        zwischen = zwischen.Replace(DTM, "Date/Time Period")
        zwischen = zwischen.Replace(FTX, "Free text")
        zwischen = zwischen.Replace(MOA, "Monetary amount")
        zwischen = zwischen.Replace(PRI, "Price detail")
        zwischen = zwischen.Replace(RFF, "Reference")
        zwischen = zwischen.Replace(LOC, "Location")
        zwischen = zwischen.Replace(TAX, "Tax")


        schreiben.Write(zwischen)

help :)
 

MFC openGL

Erfahrenes Mitglied
Nehme mal an du willst das Wort LIN durch Line Item Number ersetzen... wenn das so ist, mach mal um das LIN die " ". Replace ersetzt Strings---> Replace("alt", "neu");

Gruss

MFC OpenGL
 

Vamp7771

Mitglied
Problem gelöst!

Habe davor "LIN" usw. auch als String definiert, weil ich noch eine Select Case ausprobiert habe.

Das war der Fehler, die Abkürzungen dürfen nicht als String definiert werden.
Dein Code war also FEHLERFREI.

Danke dir!
 

Neue Beiträge