Splitten

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Hallo zusammen...
    Habe ein kleines Problem beim splitten...

    Habe eine txt in der was drin steht wie folgt, untereinander:

    XML-Quellcode

    1. ​GGHT:8372
    2. GGGT:63AD
    3. ARRE:99O12


    Würde gerne jede Zeile eizeln in ein extra Label schreiben wollen, was jeweils hinter dem ":" steht.

    Das was ich gemacht habe, ist evt ein Ansatz, jedoch nicht richtig :(

    Quellcode

    1. ​Dim Ergebnis = Meinstring.Split(":")
    2. Label1.Text = Ergebnis(0)
    Dein Option Strict Off-Ansatz geht in die richtige Richtung. Du bekommst GGHT in Deinen Label1.Text.
    Jetzt müsstest Du nur noch folgendes machen:
    • Option Strict On und den syntaktischen Fehler korrigieren
    • jede Zeile Deines Textes durchgehen und
    • nicht pro Zeile Ergebnis(0) nehmen (das ist nämlich Der Teil vor dem (ersten) :), sondern Ergebnis(1) (das ist der Teil nach dem (ersten) :)
    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.

    Otti schrieb:

    VB.NET-Quellcode

    1. Label1.Text = Ergebnis(0)
    ist der Text vor dem Doppelpunkt,

    VB.NET-Quellcode

    1. Label1.Text = Ergebnis(1)
    ist der Text nach dem Doppelpunkt.
    Mit HOver über der Variable Ergebnis hättest Du das gesehen. ;)
    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!
    Hallo zusammen.

    Ja das mit

    Quellcode

    1. Label1.Text = Ergebnis(1)
    wäre dann 8372 GGGT, also bis zum nöchsten ":"
    Wie kann ich denn noch mal zeilenweise abfragen?

    Prinzipiell kenne ich das so:

    Quellcode

    1. ​For Each line In Meinstring
    2. Dim parts() As String = line.Split(":")
    3. parts(1) = Label1.Text
    4. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Otti“ ()

    Du schaltest auf Option Strict On, splittest dann erstmal Deinen Text am Zeilenumbruch (Environment.NewLine), erhältst so Deinen Text als mehrere Zeilen, gehst dann mit einer For-Schleife durch alle Zeilen und splittest jede Zeile am Doppelpunkt, sodass Du mehrfach Ergebnis(1) in mehrere Labels schreiben musst (eine Zeile ergibt ihr eigenes Ergebnis(1))
    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.
    Hey. So habe es nun so gemacht? Funktionieren tut es, ist da viel schlechtes dran auszusetzten?

    VB.NET-Quellcode

    1. ​Dim Einträge = MeineString.Split({":", Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
    2. For i = 1 To MeineString.Length - 1
    3. Label1.Text = Einträge(1)
    4. Label2.Text = Einträge(3)
    5. Label3.Text = Einträge(5)
    6. Label4.Text = Einträge(7)
    7. Label5.Text = Einträge(9)
    8. Label6.Text = Einträge(11)
    9. Next
    gut gesplittet - aber dann - die Schleife kann weg:

    VB.NET-Quellcode

    1. Dim Einträge = MeineString.Split({":", Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
    2. Label1.Text = Einträge(1)
    3. Label2.Text = Einträge(3)
    4. Label3.Text = Einträge(5)
    5. Label4.Text = Einträge(7)
    6. Label5.Text = Einträge(9)
    7. Label6.Text = Einträge(11)

    alternativ kann man die Labels auch in ein Array tun, und dann doch wieder eine Schleife basteln - spart 3 Zeilen - ist also nicht soo wichtig.