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?

utilisateur3042186
la source
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(',');
Roi roi
la source
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.

Soner Gönül
la source
5

Essayer string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);
shA.t
la source
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;
}
bayu
la source
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

Faisal Ashfaq
la source
1

Essayez ci-dessous

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

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

production:

1,5,12,34,123
nambi_r88
la source
La question concernait C # et non VB.
metabuddy