Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen. Parametername: length

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

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

    Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen. Parametername: length

    Hi,
    möchte in einen string mit stringbuilder jede 4 zeichen einen doppelpunkt hinzufügenn.
    Aber nur wenn wirklich noch 4 zeichen folgen.
    Da liegts Problem. Ich hab zwar Abfragen, die checken sobald der folgende string <4 ist, die werden aber erst gar nicht benutzt, sonern es kommt einfach Fehler wenns so ist.

    111122223333
    ist also kein problem. Wenn dann aber noch was folgt(44), crashts.

    Danke !

    mfg der vbnoob




    VB.NET-Quellcode

    1. Dim iie As String = "11112222333344"
    2. Dim richtig As Boolean
    3. Dim newiie As New System.Text.StringBuilder()
    4. For i As Integer = 0 To iie.Length - 1 Step 4
    5. 'alles was nach i kommt ist irgendwnan nicht mehr 4 groß.
    6. If (richtig = iie.Substring(i, 4)) = False Then
    7. If iie.Substring(i, 3).Length = 3 Then
    8. newiie.Append(iie.Substring(i, 3))
    9. ElseIf iie.Substring(i, 2).Length = 2 Then
    10. newiie.Append(iie.Substring(i, 2))
    11. ElseIf iie.Substring(i, 1).Length = 1 Then
    12. newiie.Append(iie.Substring(i, 1))
    13. ElseIf iie.Substring(i, 0).Length = 0 Then
    14. newiie.Append(iie.Substring(i, 0))
    15. End If
    16. End If
    17. 'normale 4er Blöcke im format AAAA:
    18. If iie.Substring(i, 4).Length = 4 Then
    19. newiie.Append(iie.Substring(i, 4))
    20. newiie.Append(":")
    21. End If
    22. ' MessageBox.Show(iie.Substring(i, 4))
    23. Next
    24. MessageBox.Show("newiie:" & vbCrLf & newiie.ToString)

    VBderNoob schrieb:

    VB.NET-Quellcode

    1. If (richtig = iie.Substring(i, 4)) = False Then

    Du vergleichst hier einen boolschen Wert (Variable richtig) mit einer Zeichenfolge (String.Substring()), das klappt schonmal gar nicht - zumindest nicht so wie du es vielleicht gern hättest.

    Ich kann dir erstmal zwei Dinge raten:
    a) Benutze Option Strict On - und behebe zunächst die Fehler, die dein Visual Studio dir dann zwangsläufig anzeigen wird.
    b) Schau dir in der Online-Hilfe die Funktionsweise der Methode Substring der Klasse String an.
    Danach bist du hoffentlich etwas schlauer, kannst deine Frage - sofern sie dann noch Bestand haben sollte - neu formulieren und dann kannst du weitere Hilfe bekommen. ;)
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    VBderNoob schrieb:

    möchte in einen string mit stringbuilder jede 4 zeichen einen doppelpunkt hinzufügen
    Von links oder von rechts?
    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!
    Dein Problem lässt sich auch viel einfacher lösen.

    VB.NET-Quellcode

    1. For i As Integer = 1 To (s.Length \ 4) - 1
    2. s = s.Insert(i*4+i-1, ":")
    3. Next

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