Supprimer le dernier caractère spécifique d'une chaîne c #


87

J'utilise WinForms c #. J'ai une valeur de chaîne comme ci-dessous,

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

J'ai besoin de supprimer la dernière virgule dans une chaîne. Alors, comment puis-je le supprimer?


16
Pourquoi avez-vous un tel string? Je suppose qu'à cause d'une boucle qui concatène des virgules en ints. Vous pouvez utiliser à la string.Join(",", ints)place. Cela évite en premier lieu les virgules de fin.
Tim Schmelter

Réponses:


258

Essayez string.TrimEnd():

Something = Something.TrimEnd(',');

5
C'est la meilleure solution car elle fonctionne pour toutes les chaînes, y compris les situations où vous ne savez pas à l'avance SI la chaîne se termine en fait par une virgule, ou non.
East of Nowhere

6
C'est pourquoi je cherche toujours des solutions même pour des choses que je pourrais facilement écrire moi-même. Quelqu'un d'autre l'a généralement résolu. :)
dpberry178

1
Les guillemets simples n'étaient donc pas une erreur. Aujourd'hui, j'ai appris que char et string sont définis respectivement avec des guillemets simples et doubles.
egmfrs

20

La réponse de King King est bien sûr juste. Aussi le commentaire de Tim Schmelter est aussi bonne suggestion dans votre cas.

Mais si vous voulez vraiment supprimer la dernière virgule dans une chaîne , vous devriez trouver l'index de la dernière virgule et supprimer comme;

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

La sortie sera;

1,5,12,3412345

Ici a demonstration.

Il est trop peu probable que vous vouliez de cette façon, mais je veux le souligner. Et rappelez-vous, la String.Removeméthode ne supprime aucun caractère dans la chaîne d'origine, elle renvoie une nouvelle chaîne.


5

Essayer string.Remove();

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

3

La méthode TrimEnd prend un tableau de caractères d'entrée et non une chaîne. Le code ci-dessous de Dot Net Perls , montre un exemple plus efficace de la façon d'exécuter les mêmes fonctionnalités que 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

Ou vous pouvez d'abord le convertir en Char Array en:

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

Maintenant, vous avez chaque personnage indexed:

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

Jouez autour


1

Essayez ci-dessous

Quelque chose..TrimEnd (",". ToCharArray ());


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

production:

1,5,12,34,123

La question concernait C # et non VB.
metabuddy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.