2011-01-20 5 views
2

J'ai quelques chaînes telles que:Formater une longue chaîne en une courte chaîne C#

1,5555555555555
2,3421354325435354545
4,509019292

Je veux les mettre en forme dans une chaîne telle que:

1,5555
2.3421
4.5090

J'ai essayé d'utiliser le C# String.Format mais je n'arrive pas à le faire fonctionner correctement.

Quelqu'un peut-il me donner la bonne déclaration C# pour accomplir cela?

Merci.

+0

Qu'avez-vous essayé? string.Format() avec une chaîne de format numérique (telle que g ou f) dépend de la valeur d'entrée qui est un nombre (décimal, flottant, double). Donc vous devrez d'abord analyser votre chaîne de chiffres. Si vous voulez juste tronquer sans arrondir, vous pouvez toujours utiliser string.Substring(). –

+0

Avez-vous aussi des chaînes comme 1003.1543234? Que devrait-il arriver avec ceux sur le format? –

+0

ce ne sont pas des chaînes, ils sont des décimales, votre description est incorrecte et trompeuse – JrBriones

Répondre

3

On ne sait pas si vous serez toujours affaire à des valeurs numériques. Si vous voulez éviter l'analyse syntaxique des chaînes sous forme de nombres, vous pouvez essayer quelque chose comme ceci:

public static string TrimTo(string str, int maxLength) 
{ 
    if (str.Length <= maxLength) 
    { 
     return str; 
    } 
    return str.Substring(0, maxLength); 
} 

Cela couper la chaîne fournie à six caractères, si elle est plus de six. Ce semble être pour être ce que vous voulez, mais (comme le fait remarquer Kees), fera quelque chose d'inattendu avec une chaîne comme "1234567.890".

La clause conditionnelle est nécessaire ici car String.Substring se plaindra si le second index est en dehors de la chaîne (si la chaîne est plus courte que maxLength, en d'autres termes).

(Si vous avez joué avec C# 3.0 extension methods du tout, vous pourriez le reconnaître, légèrement modifié par rapport à ce qui précède, comme une excellente occasion pour un: string trimmed = s.TrimTo(10);)

+0

Je pense que ce serait le La meilleure façon de le faire, étant donné que 1.555555555 arrondit à 1.5555. – Greg

0

Si vous convertissez les cordes à double vous pouvez utiliser String.Format pour spécifier le nombre de décimales que vous souhaitez inclure lorsque vous le reformatez en tant que chaîne.

String.Format("{0:0.0000}", double.Parse("1.55555555555555")) 
Questions connexes