341 Stimmen

Letztes Zeichen der Zeichenkette löschen

Ich rufe viele Informationen in einer Liste ab, die mit einer Datenbank verknüpft ist, und ich möchte eine Reihe von Gruppen für jemanden erstellen, der mit der Website verbunden ist.

Ich benutze das zum Testen, aber es ist nicht dynamisch, also ist es wirklich schlecht:

string strgroupids = "6";

Ich möchte das jetzt benutzen. Aber die zurückgegebene Zeichenkette ist etwa so 1,2,3,4,5,

groupIds.ForEach((g) =>
{
    strgroupids = strgroupids  + g.ToString() + ",";
    strgroupids.TrimEnd(',');
});

strgroupids.TrimEnd(new char[] { ',' });

Ich möchte die , nach dem 5 aber es funktioniert definitiv nicht.

765voto

sll Punkte 59134
strgroupids = strgroupids.Remove(strgroupids.Length - 1);

MSDN:

String.Remove(Int32):

Löscht alle Zeichen aus dieser Zeichenkette, beginnend mit einem Position und bis zur letzten Position

114voto

Øyvind Bråthen Punkte 56704

Wie wäre es, wenn Sie es so machen würden

strgroupids = string.Join( ",", groupIds );

A Los Reiniger.

Es fügt alle Elemente innerhalb von groupIds mit einer ',' zwischen den beiden, aber es wird nicht ein ',' am Ende.

49voto

Dodgyrabbit Punkte 2862

In C# 8 Bereiche und Indizes eingeführt, die uns eine neue, prägnantere Lösung bieten:

strgroupids = strgroupids[..^1];

40voto

Andy Johnson Punkte 7722

Strings in c# sind unveränderlich. Wenn in Ihrem Code Sie tun strgroupids.TrimEnd(','); o strgroupids.TrimEnd(new char[] { ',' });strgroupids String nicht geändert wird .

Sie müssen etwas tun wie strgroupids = strgroupids.TrimEnd(','); stattdessen.

Um zu zitieren aus aquí :

Zeichenketten sind unveränderlich - t Objekts kann nicht mehr geändert werden, auch wenn die Syntax es erlaubt den Anschein erweckt, als ob Sie dies tun könnten. Wenn Sie zum Beispiel diesen Code schreiben, erstellt der Compiler tatsächlich ein neues String-Objekt, um die neue Zeichenfolge, und dieses neue Objekt wird b zugewiesen. Zeichenkette "h" ist dann für die Garbage Collection geeignet.

15voto

Md Nazmoon Noor Punkte 3044

Hinzufügen einer Erweiterungsmethode.

public static string RemoveLast(this string text, string character)
{
    if(text.Length < 1) return text;
    return text.Remove(text.ToString().LastIndexOf(character), character.Length);
}

dann verwenden:

yourString.RemoveLast(",");

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