29 Stimmen

Substring a string from the end of the string

Ich muss zwei Zeichen vom Ende des Strings entfernen.

Also:

string = "Hallo Marco !"

muss sein

Hallo Marco

Wie kann ich das machen?

48voto

Alex Mendez Punkte 5028

Sie können folgendes tun:

string str = "Hallo Marco !";
str = str.Substring(0, str.Length - 2);

31voto

Armen Tsirunyan Punkte 125469
s = s.Substring(0, Math.Max(0, s.Length - 2));

um auch den Fall zu berücksichtigen, wenn die Länge kleiner als 2 ist

15voto

Kirill Rakhman Punkte 38890

C# 8 führte Indizes und Bereiche ein, die es ermöglichen, zu schreiben

str[^2..]

Dies entspricht

str.Substring(str.Length - 2, 2)

Tatsächlich ist dies fast genau das, was der Compiler generieren wird, daher entsteht kein Overhead.

Beachten Sie, dass Sie eine ArgumentOutOfRangeException erhalten, wenn der Bereich nicht innerhalb des Strings liegt.

8voto

Øyvind Bråthen Punkte 56704

Was ist mit

string s = "Hallo Marco !";
s = s.Substring(0, s.Length - 2);

5voto

Felice Pollano Punkte 32046

Ich werde das Ende für unerwünschte Zeichen kürzen:

s = s.TrimEnd(' ', '!');

Um sicherzustellen, dass es auch mit mehr Leerzeichen funktioniert. Oder besser, wenn Sie sicherstellen möchten, dass es immer funktioniert, da der Eingabetext anscheinend vom Benutzer stammt:

Regex r = new Regex(@"(?'purged'(\w|\s)+\w)");
Match m = r.Match("Hallo Marco   !!");
if (m.Success)
{
    string result = m.Groups["purged"].Value;
}

Damit sind Sie sicherer. Eine Bereinigung, die sich darauf stützt, dass die letzten beiden Zeichen entfernt werden müssen, ist zu schwach.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X