Substring eines Chars???

  • VB.NET

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

    Substring eines Chars???

    Hallo,
    ich habe folgendes Problem:
    ich möchte das nachfolgende Zeichen eines Chars ermitteln, bin mir aber nicht sicher wie....

    Ich möchte nämlich wenn das Char eine Zahl ist, es einer Liste hinzufügen. Da es aber auch eine 2-Stellige Zahl sein könnte möchte ich prüfen, ob der nachfolgende Char, ebenfalls eine Zahl ist, um dann meinem Array die 2-Stellige Zahl hinzuzufügen.


    Ich hoffe auf Eure Hilfe und andere mögliche Vorschläge :)

    Mit freundlichen Grüßen,
    MichiHarry
    Gehe alle Zeichen des Strings in einer Schleife durch, erstelle eine Liste von Liste von Char (ja, Liste von Liste von Zeichen).
    Ist das aktuelle Zeichen eine Ziffer und war das vorige keine, eine neue Liste von Zeichen erstellen, das aktuelle Zeichen darin ablegen und die Liste in die erste Liste ablegen.
    Ist das aktuelle Zeichen eine Ziffer und das vorige auch, das Zeichen in der aktuellen Liste ablegen.
    Ist das aktuelle Zeichen keine Ziffer, ignorieren.
    Dann bekommst Du eine Liste, bei der jede enthaltene Liste die Zahlen enthält. Jede innere Liste wird mit String.Join("", Liste) zu einem String und anschließend mit Convert.ToInt32() in einen Integer konvertiert.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hi,

    du könntest das zum Beispiel so machen:

    VB.NET-Quellcode

    1. Dim arr = str.ToCharArray()
    2. Dim numbers As New List(Of Integer)()
    3. Dim addAsNewNumber As Boolean = True
    4. For i As Integer = 0 To arr.Length - 1
    5. If Char.IsDigit(arr(i)) Then ' wenn char ein Digit ist:
    6. If addAsNewNumber OrElse numbers.Count = 0 Then ' wenn neue nummer angelegt werden soll
    7. numbers.Add(Integer.Parse(arr(i).ToString())) ' Zahl hinzufügen
    8. addAsNewNumber = False ' Nächste vorkommende nummer zu dieser hinzufügen
    9. Else
    10. Dim lastEntry = numbers(numbers.Count - 1) ' letzte zahl holen
    11. lastEntry *= 10 ' verzehnfachen
    12. lastEntry += Integer.Parse(arr(i).ToString()) ' stele hinzufügen
    13. End If
    14. Else
    15. addAsNewNumber = True ' da jetzt gerade keine ziffer kam, biem nächsten mal einen neue Zahl hinzufügen.
    16. End If
    17. Next

    Habe es jetzt nicht getestet. KOmmazahlen und negative Zaheln wäre mit dieser Herangehensweise ein Problem.

    Man kann auch bestimmt mit der LINQ an allen Stellen splitten, die keine Ziffern sind. Das hätte ungefähr den gleichen Effekt.
    Von meinem iPhone gesendet