SubString StringBuilder c#
Ich versuche :
1 string pal = "Juan 1David 1Correa";
2 StringBuilder sb = new StringBuilder(pal);
3 Console.writeline( sb.ToString(0,9) );
4 Console.writeline( sb.ToString(10,14) );
5 Console.writeline( sb.ToString(15,26) );
Aber in der 4 Zeile wirft Er eine exception.
Warum?
- Was ist die Ausnahme, die ausgelöst? Auch dies scheint mir ein sonderbarer Gebrauch von
StringBuilder
, was sind Sie versuchen zu erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das zweite argument
StringBuilder.ToString(int, int)
stellt die Länge der gewünschten sub-string, nicht Ihr Ende-index.Beispielsweise die Letzte Aussage sollte wohl sein:
Auf einer anderen Anmerkung, Wenn alle Sie wollen, ist zu bekommen sub-strings aus dem ursprünglichen string, Sie könnte verwenden Sie einfach die
- String.Substring(int, int)
Methode.Substring
sind, könnten Sie versuchenConsole.WriteLine( sb.ToString().Substring(15) );
Zweite parameter ist die Länge, so sollte es sein
Die docs deutlich, dass
ArgumentOutOfRangeException
geworfen werden, wenn "Die Summe von startIndex und length größer als die Länge der aktuellen Instanz".Zweite parameter ist die Länge aber nicht die Letzte index. Also in deinem Fall 15+26 = 41, was außerhalb der Grenzen.
Das zweite argument ist die Länge, nicht "Ende-Zeichen". Sie es nicht finden können 14 Zeichen ab 10. - daher der Fehler.
Wenn ich diese ausführe, wird die Ausnahme geworfen wird, in Zeile 5, das macht auch Sinn, denn es gibt nicht genug Zeichen in der Eingabe-Zeichenfolge zu generieren, die 26 Zeichen beginnend am 15.
müssen Sie zuerst ein Dokument uns die Ausnahme, die Sie stattdessen bekommen, uns zu verlassen in der Dunkelheit, um zu versuchen, um es herauszufinden, selber, dann wie eine Vermutung, ich würde sagen, dass dein string enthält nicht mehr als 24 chars...
Den
StringBuilder.ToString
Methode nicht funktioniert, wie Sie erwarten. Die Parameter sind:So sind Sie ab index 15 ist und zu versuchen, die nächsten 26 Zeichen, die über die Länge der Zeichenfolge.
In der Dokumentation gefunden werden kann hier.
Bitte überprüfen Sie, dass die Zeichenfolge Leerzeichen enthält und es nicht Registerkarte Zeichen. Dies ist der einzige Grund, die Sie haben können, eine Ausnahme auf der Linie 4. Aber selbst wenn die Zeichenfolge Leerzeichen enthält, Sie wird mit einer Ausnahme auf der Linie 5, denn 26 ist die Länge des Teilstrings, nicht den index des letzten Zeichens.