Wie ersetzt man das letzte Zeichen der Zeichenkette mit c #?
string str = "Student_123_";
Muss ich ersetzen das Letzte Zeichen "_" mit ",". Ich habe es wie folgt.
str.Remove(str.Length -1, 1);
str = str + ",";
Jedoch ist es möglich, um es zu erreichen, effizienter zu gestalten. kann mit einer Zeile code.??
BTW, das Letzte Zeichen kann jedes beliebige Zeichen. So Ersetzen Sie nicht arbeiten hier.
Kommentar zu dem Problem - Öffnen
Vergessen Sie nicht über die Klasse StringBuilder. Enthält mehrere nützliche Dinge zu tun, mit Streichern, sehr effizient. Siehe meine Antwort unten.
Mit einer Zeile code nicht immer bedeutet, es ist effizient.
Wollen Sie eine effiziente Möglichkeit, es zu tun, oder nur ein kurzer Weg (wie in weniger code-Zeilen) ist es zu tun?
InformationsquelleAutor der Frage user732853 | 2011-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht.
In C# strings sind immutable und somit können Sie nicht ändern Sie den string "in place". Sie müssen zuerst einen Teil der Zeichenfolge und dann erstellen Sie eine neue Zeichenfolge. In der Tat ist dies auch bedeutet, dass Ihre ursprüngliche code ist falsch, da
str.Remove(str.Length -1, 1);
nicht ändern, str, es gibt eine neue Zeichenfolge! Dies tun sollten:InformationsquelleAutor der Antwort orlp
C# .NET macht es fast zu einfach.
InformationsquelleAutor der Antwort B H
Das ist eine Einschränkung der Arbeit mit
string
. Sie könnenStringBuilder
wenn Sie brauchen, um eine Menge von änderungen wie diese. Aber es lohnt sich nicht, für die einfache Aufgabe, die Sie benötigen.InformationsquelleAutor der Antwort Jonathan Wood
Elegant, aber nicht sehr effizient.
Ersetzt beliebige Zeichen am Ende der str mit einem Komma.
InformationsquelleAutor der Antwort Ryan Williams
Verwenden der StringBuilder-Klasse
InformationsquelleAutor der Antwort IDWMaster
str = str.Substring(0, str.Length-1) + ",";
InformationsquelleAutor der Antwort
Gut, was Sie gewonnen haben, nicht arbeiten, weil
str.Remove(...)
nicht manipulierenstr
es gibt eine neue Zeichenfolge mit den Abbau-Vorgang abgeschlossen.So müssen Sie:
In Bezug auf die Effizienz, es gibt mehrere andere Möglichkeiten, die man machen konnte (substring, trim...), aber letztlich wirst du um den gleichen Raum/Zeit-Komplexität.
EDIT:
Auch, versuchen Sie nicht zu zerquetschen alles in eine Zeile, die Programmierer, die nach Ihnen kommen wird zu schätzen wissen, der besseren Lesbarkeit. (Obwohl in diesem Fall eine einzelne Zeile ist einfach leicht zu Lesen.) Eine Zeile != effizienter.
InformationsquelleAutor der Antwort debracey
Mit nur einer Zeile code, den Sie schreiben könnte:
InformationsquelleAutor der Antwort coldandtired
str.Remove
nicht ändernstr
es gibt einen neuen string. Ihre erste Zeile sollte lautenstr = str.Remove...
Einer Zeile? OK:
str = str.Remove(str.Length - 1) + ",";
Ich denke, das ist so effizient, wie Sie gehen zu bekommen. Technisch, sind Sie die Schaffung von zwei neuen strings hier nicht ein (das Ergebnis Der Entfernen, und das Ergebnis der Verkettung). Aber alles was ich denken kann, nicht schaffen, zwei strings, endet die Schaffung von mehr als 1 anderen Objekt zu tun. Könnten Sie ein StringBuilder-Objekt, aber das ist schwerer zu gewichten als ein zusätzliches string, oder vielleicht eine
char[]
, aber es ist immer noch ein extra-Objekt, nicht besser als das, was ich oben aufgeführt.InformationsquelleAutor der Antwort David Yaw