Verwenden Der .Länge Substring (VB.NET)
Nicht herausfinden können, warum dies nicht funktioniert.
Ich versuche zu analysieren, eine Zeichenfolge variabler Länge mit einem "." irgendwo im inneren, und dann ausziehen, den "." und alle Zeichen, bevor Sie es. Dies ist ein Aufruf über einen web-service.
Beim Debuggen, es funktioniert gut, bis es aus sich heraus in der letzten Zeile, von unten, die mit der browser-Meldung:
"System.ArgumentOutOfRangeException: der Index und die Länge müssen sich auf eine Position in der Zeichenfolge.
Parameter name: length
"
Jemand hat eine Idee?
Code1, unten ist eine input-variable übergeben, um die web-service aus einer eform.
Dim CharNo As New Integer
CharNo = Code1.IndexOf(".")
MyCodebookValueStrip.o_Code1 = Code1.Substring(CharNo + 1, (Code1.Length - CharNo))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Berechnung von der Länge der verbleibenden string ist falsch. Sie haben zu subtrahieren eines mehr:
Du kannst auch einfach den zweiten parameter weglassen, und es wird der rest der Zeichenkette:
Vielleicht könnten Sie versuchen, eine alternative und sehr einfache Ansatz?
wenn Sie sich absolut sicher, dass die Zeichenfolge enthält jedoch eine Frist. Ansonsten:
wird Sie wieder 'Nichts' wenn Sie die Zeichenfolge nicht enthalten, eine Frist.
Wenn Ihr Zeichenfolge enthält mehr als einen Zeitraum, erhalten Sie die Teilzeichenkette nach dem letzten Punkt in der Zeichenfolge zurück. Aber Sie haben Spielraum, es anders zu machen, z.B.:
geben Sie "StringOne".
geben Sie "StringThree".
geben Sie "StringTwo".
Müssen Sie die Referenz-und import-System.Linq zu verwenden, dieses Zeug, was bedeutet, dass Sie brauchen, um mit .NET 3.5 oder höher.
Sollte es nicht sein:
Weil
Code1.Length - CharNo
gibt Ihnen ein extra-Charakter.Ex:
Du willst die letzten 4 Zeichen, und die
length - charNo
Folge 5. Daher der Fehler.Den oben funktioniert bei mir einwandfrei.. könnte es sein, dass Sie immer eine -1 position von der IndexOf-Methode?
+ 1
zu dencharNo
in seinem AufrufSubString
.Das problem ist, dass Sie werden das hinzufügen der Start-index (
CharNo + 1
), aber nicht minus eins von der Länge. Um es zu korrigieren, sollten Sie geschrieben haben:Es ist jedoch unnötig, da alles, was Sie wirklich tun musste, war:
Außerdem sollten Sie wahrscheinlich die überprüfung, ob
CharNo + 1
ist kleiner als die Länge, nur für den Fall der Zeitraum wurde das Letzte Zeichen im text:Jedoch, wenn, was Sie versuchen, zu bekommen, ist die Erweiterung aus einem Dateinamen, Sie sollten mit den
Path
Klasse, es richtig zu machen (und einfacher):Danke an alle. Ich sollte erkannt haben, dass es brauchte eine -1.
So viele richtige Antworten hier, ich bin mir nicht sicher, ob ich wählen kann mehr, als man als "akzeptierte Antwort". Ich werde es einmal versuchen.
Vielen Dank.