Entfernen Sie das letzte bestimmte Zeichen in einer Zeichenfolge c #

87

Ich benutze WinForms c #. Ich habe String-Wert wie unten,

string Something = "1,5,12,34,";

Ich muss das letzte Komma in einer Zeichenfolge entfernen. Wie kann ich es löschen?

user3042186
quelle
16
Warum hast du so einen string? Ich nehme wegen einer Schleife an, die Kommas mit ints verkettet . Sie können string.Join(",", ints)stattdessen verwenden. Dadurch werden in erster Linie Nachkommastellen vermieden.
Tim Schmelter

Antworten:

258

Versuchen Sie string.TrimEnd():

Something = Something.TrimEnd(',');
König König
quelle
5
Dies ist die beste Lösung, da sie für alle Zeichenfolgen funktioniert, einschließlich Situationen, in denen Sie nicht im Voraus wissen, ob die Zeichenfolge tatsächlich mit einem Komma endet oder nicht.
Östlich von Nirgendwo
6
Deshalb suche ich immer noch nach Lösungen, auch für Dinge, die ich leicht selbst schreiben könnte. Jemand anderes hat es normalerweise gelöst. :)
dpberry178
1
Die einfachen Anführungszeichen waren also kein Fehler. Heute habe ich gelernt, dass char und string mit einfachen bzw. doppelten Anführungszeichen definiert sind.
egmfrs
20

Die Antwort von König König ist natürlich richtig. Auch Tim Schmelters Kommentar ist in Ihrem Fall ein guter Vorschlag.

Wenn Sie jedoch das letzte Komma in einer Zeichenfolge wirklich entfernen möchten , sollten Sie den Index des letzten Kommas finden und like entfernen.

string s = "1,5,12,34,12345";
int index = s.LastIndexOf(',');
Console.WriteLine(s.Remove(index, 1));

Ausgabe wird sein;

1,5,12,3412345

Hier a demonstration.

Es ist zu unwahrscheinlich, dass Sie diesen Weg wollen, aber ich möchte darauf hinweisen. Und denken Sie daran, dass die String.RemoveMethode kein Zeichen in der ursprünglichen Zeichenfolge entfernt, sondern eine neue Zeichenfolge zurückgibt.

Soner Gönül
quelle
5

Versuchen string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);
shA.t.
quelle
3

Die TrimEnd-Methode verwendet ein Eingabezeichenarray und keine Zeichenfolge. Der folgende Code von Dot Net Perls zeigt ein effizienteres Beispiel für die Ausführung derselben Funktionalität wie TrimEnd.

static string TrimTrailingChars(string value)
{
    int removeLength = 0;
    for (int i = value.Length - 1; i >= 0; i--)
    {
        char let = value[i];
        if (let == '?' || let == '!' || let == '.')
        {
            removeLength++;
        }
        else
        {
            break;
        }
    }
    if (removeLength > 0)
    {
        return value.Substring(0, value.Length - removeLength);
    }
    return value;
}
Bayu
quelle
1

Oder Sie können es zuerst in Char Array konvertieren, indem Sie:

string Something = "1,5,12,34,";
char[] SomeGoodThing=Something.ToCharArray[];

Jetzt hast du jeden Charakter indexed:

SomeGoodThing[0] -> '1'
SomeGoodThing[1] -> ','

Spielen Sie herum

Faisal Ashfaq
quelle
1

Versuchen Sie es unten

Something..TrimEnd (",". ToCharArray ());

pmh
quelle
0
Dim psValue As String = "1,5,12,34,123,12"
psValue = psValue.Substring(0, psValue.LastIndexOf(","))

Ausgabe:

1,5,12,34,123
nambi_r88
quelle
Frage war über C # nicht VB.
Metabuddy