Ruft einen Teilstring von dieser Instanz ab. Die Teilzeichenfolge beginnt an einer bestimmten Zeichenposition. MSDN
Bearbeiten , für aktualisierten Beitrag
Entfernen Sie die letzten 3 Zeichen aus der Zeichenfolge [Aktualisierte Frage]
Um die letzten drei Zeichen aus dem String entfernen können Sie verwenden String.substring (Int32, Int32) und geben sie den Startindex 0und Ende Index drei weniger als die Stringlänge . Der Teilstring wird vor den letzten drei Zeichen angezeigt.
Ruft einen Teilstring von dieser Instanz ab. Der Teilstring beginnt an einer bestimmten Zeichenposition und hat eine bestimmte Länge.
Sie können auch die String.Remove (Int32) -Methode verwenden, um die letzten drei Zeichen zu entfernen, indem Sie den Startindex als Länge - 3 übergeben . Dieser wird von diesem Punkt bis zum Ende des Strings entfernt.
Gibt eine neue Zeichenfolge zurück, in der alle Zeichen in der aktuellen Instanz gelöscht wurden, beginnend an einer bestimmten Position und bis zur letzten Position
Dank @braks lautete die ursprünglich gestellte Frage "Die letzten 3 Zeichen aus der Zeichenfolge lesen". Diese wird später bearbeitet und ich wusste nicht, siehe den Bearbeitungsverlauf der Frage. Ihr Kommentar hat mir geholfen, meine Antwort zu korrigieren, die nach der Bearbeitung der Frage falsch wurde.
Dieser ist ziemlich "kreativ", da er nicht die Länge des Strings benötigt, aber die umgekehrte Operation ist wahrscheinlich teurer.
Aleksandar
4
Das Umkehren einer Zeichenfolge ist definitiv teurer als das Zählen ihrer Zeichen. Es muss eine ganz neue Zeichenfolge erstellt, dann das Original darauf kopiert und dann die ursprüngliche Zeichenfolge mit Müll gesammelt werden.
Matt Gregory
@ MattGregory-Zeichenfolgen sind unveränderlich: Entfernen, Teilzeichenfolge, jede Zeichenfolgenfunktion generiert eine neue Zeichenfolge. Das Überschreiben des ursprünglichen Zeigers führt immer zur Speicherbereinigung. Dies ist jedoch immer noch langsamer, da Enumerable.Reversedie Zeichenfolge in a char[]gepuffert wird, dann in eine neue char[], die 3 kürzer ist, gepuffert wird und dann eine neue generiert wird string(mit intern einer anderen char[]). Ein besserer Ansatz wäre new string("hello".Reverse().Skip(3)), oder einfach eine eigene String-Erweiterungsfunktion zu schreiben AllBut(this string in, int i), die Teilzeichenfolge verwendet.
Wolfzoon
@MattGregory Es werden nicht einmal die Zeichen einer Zeichenfolge "gezählt", sondern eine Zeichenfolge Lengthgespeichert.
Wolfzoon
1
Jetzt haben wir auch .SkipLast(n). Keine Notwendigkeit, etwas umzukehren. "hello".SkipLast(3)gibt"he"
Wahrscheinlich nicht genau das, wonach Sie suchen, da Sie sagen, dass es sich um "dynamische Daten" handelt, aber angesichts Ihrer Beispielzeichenfolge funktioniert dies auch:
Einfach. text = text.remove(text.length - 3). Ich habe 3 subtrahiert, weil die RemoveFunktion alle Elemente aus diesem Index bis zum Ende der Zeichenfolge entfernt text.length. Wenn ich also 3 subtrahiere, wird die Zeichenfolge mit 3 Zeichen entfernt.
Sie können dies so verallgemeinern, dass aZeichen am Ende der Zeichenfolge entfernt werden:
text = text.remove(text.length - a)
Was ich also tat, war dieselbe Logik. Die removeFunktion entfernt alle Elemente von ihrem Inneren bis zum Ende der Zeichenfolge, die der Länge des Texts entspricht. Wenn ich also avon der Länge der Zeichenfolge subtrahiere , erhält ich die Zeichenfolge mit aentfernten Zeichen.
Es funktioniert also nicht nur für 3, sondern für alle positiven Ganzzahlen, außer wenn die Länge der Zeichenfolge kleiner oder gleich aist. In diesem Fall wird eine negative Zahl oder 0 zurückgegeben.
Antworten:
Sie können string.Substring verwenden und ihm den Startindex geben, und der Teilstring wird vom angegebenen Index bis zum Ende gestartet .
Bearbeiten , für aktualisierten Beitrag
Um die letzten drei Zeichen aus dem String entfernen können Sie verwenden String.substring (Int32, Int32) und geben sie den Startindex
0
und Ende Index drei weniger als die Stringlänge . Der Teilstring wird vor den letzten drei Zeichen angezeigt.String.Substring-Methode (Int32, Int32)
Sie können auch die String.Remove (Int32) -Methode verwenden, um die letzten drei Zeichen zu entfernen, indem Sie den Startindex als Länge - 3 übergeben . Dieser wird von diesem Punkt bis zum Ende des Strings entfernt.
String.Remove-Methode (Int32)
quelle
quelle
Ich habe all das durchgelesen, wollte aber etwas eleganteres. Nur um eine bestimmte Anzahl von Zeichen am Ende einer Zeichenfolge zu entfernen:
Ausgabe:
quelle
Enumerable.Reverse
die Zeichenfolge in achar[]
gepuffert wird, dann in eine neuechar[]
, die 3 kürzer ist, gepuffert wird und dann eine neue generiert wirdstring
(mit intern einer anderenchar[]
). Ein besserer Ansatz wärenew string("hello".Reverse().Skip(3))
, oder einfach eine eigene String-Erweiterungsfunktion zu schreibenAllBut(this string in, int i)
, die Teilzeichenfolge verwendet.Length
gespeichert..SkipLast(n)
. Keine Notwendigkeit, etwas umzukehren."hello".SkipLast(3)
gibt"he"
quelle
myString = myString.Remove(myString.Length - 3)
das ist.quelle
Sie können verwenden
String.Remove
, um von einer angegebenen Position bis zum Ende der Zeichenfolge zu löschen.quelle
Wahrscheinlich nicht genau das, wonach Sie suchen, da Sie sagen, dass es sich um "dynamische Daten" handelt, aber angesichts Ihrer Beispielzeichenfolge funktioniert dies auch:
quelle
str= str.Remove(str.Length - 3);
quelle
Hier sind Beispiele für Teilzeichenfolgen. >>
http://www.dotnetperls.com/substring
Verweisen Sie diese.
quelle
quelle
Entfernen Sie die letzten Zeichen aus einer Zeichenfolge
.Text.Remove(10)
// wird verwendet, um Text vom Index 10 bis zum Ende zu entfernenquelle
Der neue C # 8.0-Bereichsoperator kann eine gute Abkürzung sein, um dies zu erreichen.
Beispiel:
quelle
string.Remove()
Entfernt alle Elemente aus diesem Index bis zum Ende.items.length - 3
erhält den Index 3 Zeichen vom Endequelle
Einfach.
text = text.remove(text.length - 3)
. Ich habe 3 subtrahiert, weil dieRemove
Funktion alle Elemente aus diesem Index bis zum Ende der Zeichenfolge entfernttext.length
. Wenn ich also 3 subtrahiere, wird die Zeichenfolge mit 3 Zeichen entfernt.Sie können dies so verallgemeinern, dass
a
Zeichen am Ende der Zeichenfolge entfernt werden:Was ich also tat, war dieselbe Logik. Die
remove
Funktion entfernt alle Elemente von ihrem Inneren bis zum Ende der Zeichenfolge, die der Länge des Texts entspricht. Wenn ich alsoa
von der Länge der Zeichenfolge subtrahiere , erhält ich die Zeichenfolge mita
entfernten Zeichen.Es funktioniert also nicht nur für 3, sondern für alle positiven Ganzzahlen, außer wenn die Länge der Zeichenfolge kleiner oder gleich
a
ist. In diesem Fall wird eine negative Zahl oder 0 zurückgegeben.quelle