String kürzen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ~Arkantos~.

    String kürzen

    Hallo,

    Ich bin eben wieder auf ein kleines Problem gestoßen, bei dem ich nicht mehr weiter weiß ...
    Ich hab einen String, der seine Werte/Länge verändert. In ihm sind nur Zahlen enthalten.

    Als kleines Beispiel:

    Quellcode

    1. 5672254362

    Ich muss diesen nun in ein Array einlesen - und zwar immer 4 Zeichen von rechts.

    Quellcode

    1. Array(0) = 4362
    2. Array(1) = 7225
    3. 56 Rest, muss/darf nicht beachtet werden.

    Irgendwie bringe ich das nicht hin.
    Für Ideen/Anregungen wäre ich sehr dankbar.


    Liebe Grüße,


    ~Arkantos~
    Hallo,

    Danke schon mal, für die schnelle Antwort.
    Ich brauch aber leider schon an dieser Stelle das Array. :/

    VB.NET-Quellcode

    1. Dim i As Integer = 0
    2. Dim zaehler As Integer = 4
    3. Do While Test >= 4
    4. pass(i) = Mid(mPack(3), zaehler, 4)
    5. i += 1
    6. Test -= 4
    7. zaehler += 4
    8. Loop

    Do klappt das leider auch nicht.
    Dort wird immer von links angefangen zu zählen - Ansonsten wär das Optimal ! x.x

    Gibt es keine Möglichkeit, einfach von rechts anzufangen, zu lesen?


    Liebe Grüße,


    ~Arkantos~
    Also du hast VB 2008 angegeben, was machen da VB6 Methoden drin?

    Ich habe dir doch die For-Schleife vorgeschlagen und als Array kannst es später auch wieder konvertieren. Hier mal ein Beispielcode, der muss so nicht funktionieren, solls dir aber verdeutlichen

    VB.NET-Quellcode

    1. Dim s As String = "5672254362"
    2. Dim l As New List(Of String)
    3. For i As Integer = 0 To s.Length - 1 Step 4
    4. If i + 4 <= s.Length - 1 Then l.Add(s.SubString(i, 4))
    5. Next
    6. Dim deinArray As String() = l.ToArray()


    Die If Bedingung ist zum Prüfen ob auch noch 4 Zahlen im String vorhanden sind um sie hinzuzufügen.
    Dodos Lösung ist schon korrekt. Von rechts nach links vielleicht via Reverse() =?
    Man kann auch "vorwärts arbeiten". Man muss nur die Startposition vorher ermitteln. Das geht z.B. mit Mod
    Beispiel:

    VB.NET-Quellcode

    1. Dim input As String = "827912757258762987982879879847575"
    2. Dim splitSize As Integer = 4
    3. Dim startPosition As Integer = input.Length Mod splitSize
    4. Dim result As New List(Of String)
    5. For index As Integer = startPosition To input.Length - 1 Step splitSize
    6. result.Add(input.Substring(index, splitSize))
    7. Next
    8. ' result.ToArray <- falls das Ergebnis als Array vorliegen soll (siehe Hinweis in den vorherigen Posts)
    9. ' Kontrolle
    10. For Each s As String In result
    11. Debug.WriteLine(s)
    12. Next

    VB.NET-Quellcode

    1. Dim s As String = "5672254362"
    2. Dim l As New List(Of String)
    3. For i As Integer = s.Length - 1 To 0 Step -4
    4. If i - 4 >= 0 Then l.Add(s.SubString(i, 4))
    5. Next
    6. Dim deinArray As String() = l.ToArray()


    Is jetzt auch nicht so schwer oder? Einfach umdrehen.