86 votes

Supprimer le dernier caractère d'une chaîne de caractères en C#. Une manière élégante?

J'ai une chaîne numérique, comme, par exemple, ce 2223,00. Je voudrais le transformer en 2223, c'est: sans que l'information après la ",". Supposons qu'il n'y aura que deux décimales après la ",".

J'ai fait:

str = str.Remove(str.Length - 3, 3);

Est-il une solution plus élégante? Peut-être en utilisant une autre fonction? -Je n'aime pas mettre explicite des nombres-

173voto

Reed Copsey Points 315315

Vous pouvez réellement utiliser seulement la suppression de la surcharge qui prend un paramètre:

str = str.Remove(str.Length - 3);

Toutefois, si vous êtes en essayant d'éviter le codage en dur de la longueur, vous pouvez utiliser:

str = str.Remove(str.IndexOf(','));

16voto

jimmy_keen Points 14831

Peut-être ceci:

str = str.Split(",").First();

5voto

Ce sera de retour pour vous un string à l'exclusion de tout ce qui est après la virgule

str = str.Substring(0, str.IndexOf(','));

Bien sûr, cela suppose que votre chaîne a en fait une virgule avec des décimales. Le code ci-dessus sera un échec si elle ne le fait pas. Vous aimeriez faire plus de vérifications:

commaPos = str.IndexOf(',');
if(commaPos != -1)
    str = str.Substring(0, commaPos)

Je suis en supposant que vous travaillez avec une chaîne pour commencer. Idéalement, si vous travaillez avec un certain nombre pour commencer avec, comme un float ou double, vous pouvez simplement le jeter à un int, alors n' myInt.ToString() comme:

myInt = (int)double.Parse(myString)

Cette analyse la double utilisation de la culture actuelle (ici aux états-unis, nous utilisons . pour les décimales). Cependant, ce nouveau suppose que votre chaîne d'entrée est peut être analysé.

4voto

Patrick Desjardins Points 51478
String.Format("{0:0}", 123.4567);      // "123"

Si votre première valeur est un nombre décimal en une chaîne de caractères, vous aurez besoin de les convertir

String.Format("{0:0}", double.Parse("3.5", CultureInfo.InvariantCulture))  //3.5

Dans cet exemple, j'ai choisi de l'Invariant de la culture, mais vous pouvez utiliser celui que vous voulez.

Je préfère utiliser la mise en forme de la fonction, parce que vous ne savez jamais si la décimale peut contenir 2 ou 3 nombre important dans l'avenir.

Edit: Vous pouvez également utiliser Truncate supprimer tous les après les , ou .

Console.WriteLine(Decimal.Truncate(Convert.ToDecimal("3,5")));

0voto

Abdul Munim Points 9039

Vous pouvez utiliser TrimEnd. Son efficacité et a l'air propre

"Name,".TrimEnd(',');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X