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?


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(',');

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.


5

Versuchen string.Remove();

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

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;
}

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


1

Versuchen Sie es unten

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


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

Ausgabe:

1,5,12,34,123

Frage war über C # nicht VB.
Metabuddy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.