2013-03-07 2 views
3

J'ai un ensemble d'entiers que je dois afficher dans une de mes vues.Comment empêcher le retour de ToString ("0,0") 00

Je les afficher cette façon:

int myVariable = 12500; 
myVariable.ToString("0,0", System.Globalization.CultureInfo.InvariantCulture).Replace(",", " ") 

Si myVariable contient 12500, il affiche: 12 500. C'est exactement ce que je veux. Cependant, si myVariable contient 0, il affichera: 00. Au lieu de 00, je veux que 0 soit affiché.

J'ai regardé MSDN sur les formats numériques personnalisés et je n'ai rien trouvé qui pourrait m'aider. Si c'est possible, je ne voudrais pas pouvoir faire plus de gestion de chaîne (remplacer, etc). Juste changer le format de 0,0 à quelque chose qui fonctionnerait pour moi.

+1

ce qui est 'INT' ?. – Default

+0

peut-être [ceci] (http://www.csharp-examples.net/string-format-int/) pourrait aider – Default

+0

J'ai édité ma question pour remplacer INT. –

Répondre

7

Je suppose que vous voulez:

myVariable.ToString("#,0", ...) 

Bien que je serais surpris si l'un des formats de chaînes de caractères standards ne pas traiter ce. Par exemple, vous pouvez utiliser:

myVariable.ToString("N0", ...) 

Notez également qu'au lieu d'utiliser la culture invariant puis remplacer par des virgules avec l'espace, vous pouvez créer votre propre culture (basée sur la culture invariante, potentiellement) avec un NumberGroupSeparator de " ".

Exemple de code:

// You don't need to create this every time. Create it once and put it in a static variable. 
var culture = (CultureInfo) CultureInfo.InvariantCulture.Clone(); 
culture.NumberFormat.NumberGroupSeparator = " "; 

Console.WriteLine(12345.ToString("N0", culture)); // 12 345 
+1

myvariable.ToString ("N0", ...); devrait faire l'affaire. –

+0

@ DasKrümelmonster: Yup, c'est exactement ce que j'avais décidé aussi. –

+0

Voulez-vous dire que je pourrais utiliser N0 sans le remplacer? –

Questions connexes