Rimuovi l'ultimo carattere specifico in una stringa c #


88

Uso WinForms c #. Ho un valore stringa come di seguito,

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

Devo rimuovere l'ultima virgola in una stringa. Quindi come posso eliminarlo?


16
Perché hai un tale string? Presumo a causa di un ciclo che concatena le virgole a ints. Puoi usare string.Join(",", ints)invece. Ciò evita le virgole finali in primo luogo.
Tim Schmelter

Risposte:


262

Prova string.TrimEnd():

Something = Something.TrimEnd(',');

5
Questa è la soluzione migliore perché funziona per tutte le stringhe, comprese le situazioni in cui non si sa in anticipo SE la stringa finisce effettivamente con una virgola o meno.
East of Nowhere,

6
Questo è il motivo per cui cerco ancora soluzioni anche per cose che potrei scrivere facilmente da solo. Qualcun altro di solito l'ha risolto. :)
dpberry178

1
Quindi le virgolette singole non sono state un errore. Oggi ho imparato che il carattere e la stringa sono definiti rispettivamente con virgolette singole e doppie.
egmfrs

20

La risposta di King King è ovviamente giusta. Anche il commento di Tim Schmelter è un buon suggerimento nel tuo caso.

Ma se vuoi davvero rimuovere l'ultima virgola in una stringa , dovresti trovare l'indice dell'ultima virgola e rimuovere like;

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

L'uscita sarà;

1,5,12,3412345

Qui a demonstration.

È troppo improbabile che tu voglia in questo modo, ma voglio indicarlo. E ricorda, il String.Removemetodo non rimuove alcun carattere nella stringa originale, ma restituisce una nuova stringa.


5

Provare string.Remove();

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

3

Il metodo TrimEnd accetta una matrice di caratteri di input e non una stringa. Il codice riportato di seguito da Dot Net Perls , mostra un esempio più efficiente di come eseguire la stessa funzionalità di 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

Oppure puoi convertirlo prima in Char Array:

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

Ora hai ogni personaggio indexed:

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

Giocaci intorno


1

Prova di seguito

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


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

produzione:

1,5,12,34,123

La domanda riguardava C # non VB.
metabuddy

0

Quando hai spazi alla fine. puoi usare beliow.

ProcessStr = ProcessStr.Replace(" ", "");
Emails     = ProcessStr.TrimEnd(';');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.