String zerlegen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von buettner123.

    String zerlegen

    Hallo, ich hoffe, dass ihr mir weiterhelfen könnt! Ich habe einen sehr langen String der ständig länger wird, und den möchte ich jetzt verarbeiten! Problem dabei ist: ich möchte ihn erst in kleinere Teilabschnitte zerlegen, die ich in einem array ablege und dann mit einer for each schleife weiterverarbeite...
    Der string sieht ungefähr so aus:

    Quellcode

    1. 00787|3|6244|17|1|0|3|0|00|1|47289090|19180|807|5000|1|34898548|1261|6673|10710|1|34898548|1230|6496|10640|1|34898548|1199|6320|10440|n|INV|42641523|00|1|34898548|1165|6143|10290|1|47289090|18923|881|5000|1|34898548|1190



    Mein Ansatz war das hier:

    VB.NET-Quellcode

    1. Dim Split_n() As String = Split(Nachricht, "|00|")
    2. For Each S As String In Split_n
    3. Console.WriteLine(S)
    4. Next


    Mein eigentlicher Gedanke war, den String zwischen |0 und 0| zu splitten, wenn das direckt nebeneinander liegt... aber das bekomme ich nicht hin!
    Also das mit bei 00 splitten wollte ich machen, weil immer ab 0| bis |0 also wo die aufeinandertreffen ein zusammengehörender String ist...
    Diese einzelnen Strings wollte ich dann weiterverarbeiten.

    z.b. gehört hier das farbige immer zusammen:

    00787|3|6244|17|1|0|3|0|0
    0|1|47289090|19180|807|5000|1|34898|0|00|234134|3|234
    Wo kommt den der String her ?

    Wenn du ihn selbst i-woher ausgibst (Programm, Php, ect) dann benutze doch einfach 2 trennzeichen.

    also zbsp:

    00787|3|6244|17|1|0|3|0|0;0|1|47289090|19180|807|5000|1|34898|0|0;0|234134|3|234

    Das dumme ist, wenn du 00 angibst dann trennt er das so :
    00787|3|6244|17|1|0|3|0|00
    |1|47289090|19180|807|5000|1|34898|00
    |234134|3|234

    Es ist also nie vorteilhaft einen wert den du brauchst gleichzeitig als trennzeichen zu benutzen
    MFG
    Also: der String stammt aus dem Netzwerk verkehr mit einem Server! Der Server sendet mir diese Informationen, und ich muss halt erstmal trennen, was jetzt zu was gehört!
    Ein trennzeichen könnte ich evtl. beim auslesen einfügen jedoch kenn ich mich dafür noch nicht gut genug mit vb aus... vllt kannst du mir ja helfen, hier mal die Funktion, die die Daten empfängt:

    VB.NET-Quellcode

    1. Private Function ReadData(ByRef Nachricht As String) As Boolean
    2. Dim Buffer(tcpClient.ReceiveBufferSize) As Byte
    3. Dim OK As Boolean = False
    4. Dim ReadedBytes As Integer
    5. Nachricht = ""
    6. Try
    7. ReadedBytes = NetworkStream.Read(Buffer, 0, tcpClient.ReceiveBufferSize)
    8. If ReadedBytes > 0 Then
    9. OK = True
    10. Nachricht = Encoding.UTF8.GetString(Buffer, 0, ReadedBytes)
    11. Else
    12. Nachricht = ""
    13. OK = False
    14. End If
    15. Catch ex As System.IO.IOException
    16. OK = False
    17. End Try
    18. Return OK
    19. End Function
    hatte ich auch schon dran gedacht, aber die zeichenketten sind ja nicht immer gleich lang und enthalten nicht immer das gleiche.... oder denke ich da grad falsch? wie müsste das mit regex denn dann aussehn?

    EDIT:// Habs geschafft mit Chr(10) als Splitmittel.

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