Textzeile je nach Werten definiert ausgeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von JoachimFürstner.

    Textzeile je nach Werten definiert ausgeben

    Hallo zusammen,

    folgender Code gibt mir Text in einer Texdatei aus:

    VB.NET-Quellcode

    1. Dim myWriter As New StreamWriter("V:\" + Trim(Nummer) + ".txt", False)
    2. myWriter.WriteLine(LR + " | " + Position(0) + Wert(0) + " | " Position(1) + Wert(1) + " | " + Position(3) + Wert(3) + " | " Position(4) + Wert(4) + " | ")
    3. myWriter.Close()

    Die Ausgabe kann derzeit je nach Werten unterschiedlich aussehen, z.B.:

    Quellcode

    1. Position(0) Wert(0) Position(1) Wert(1) Position(3) Wert(3) Position(4) Wert(4)
    2. | 205 1 | 305 4 | 0 12 | 1 12 |
    3. | 0 14 | 309 1 | 2 1 | 0 2 |
    4. | 0 14 | 0 1 | 1 12 | 0 2 |


    Ich möchte aber wenn Position(i) = 0 ist, die Einträge Position(i) + Wert(i) für diese Zeile leer lassen:

    Quellcode

    1. Position(0) Wert(0) Position(1) Wert(1) Position(3) Wert(3) Position(4) Wert(4)
    2. | 205 1 | 305 4 | | 1 12 |
    3. | | 309 1 | 2 1 | |
    4. | | | 1 12 | |

    Hat jemand einen Tipp oder Lösungsvorschlag, wie ich das am Besten umsetzen kann ? Vielen Dank !
    Wie ist LR definiert?
    Geht das auch mit Option Strict On und ohne VisualBasic-Namespace?
    Wie wär's mit If()?

    VB.NET-Quellcode

    1. myWriter.WriteLine(LR + " | " + If(Position(0) <> 0, Position(0) + Wert(0), String.Empty) + " | " Position(1) + Wert(1) + " | " + Position(3) + Wert(3) + " | " Position(4) + Wert(4) + " | ")

    ggf statt String.Empty einen anderen Platzhalter verwenden und an den weiteren Stellen auch mit If() arbeiten.
    ggf. auch den finalen String mit ner Schleife und nem Text.StringBuilder zusammenschustern, aber das ist ne andere Sache
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @JoachimFürstner Mach Dir eine Funktion MyResult(index), die Dir Position(i) + Wert(i) entsprechend zusammensetzt.
    Bau Dir mit String.Format(...) den Ausgabestring zusammen, da siehst Du direkt, was da passiert:

    VB.NET-Quellcode

    1. myWriter.WriteLine(String.Format("{0} | {1} | {2} | {3} | {4}", LR, MyResult(0), MyResult(1), MyResult(3), MyResult(4))
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!