web-dev-qa-db-fra.com

int valeur inférieure à 10 convertir en chaîne nombre à deux chiffres

string strI;   

for (int i = 1; i < 100; i++)
    strI = i.ToString();

ici, si i = 1 alors ToString donne "1"

Mais je veux obtenir "01" ou "001"

Cela semble assez facile, mais il n'y a qu'un article à propos de 

datetime.ToString("yyyy-MM-dd")`
102
Sungguk Lim
i.ToString("00")

ou 

i.ToString("000")

en fonction de ce que vous voulez

Consultez l'article MSDN sur les chaînes de format numérique personnalisées pour plus d'options: http://msdn.Microsoft.com/en-us/library/0c899ak8(VS.71).aspx

209
MPritchard

La réponse acceptée est bonne et rapide:

i.ToString("00")

ou 

i.ToString("000")

Si vous avez besoin de plus de complexité, String.Format vaut la peine d'essayer:

var str1 = "";
var str2 = "";
for (int i = 1; i < 100; i++)
{
    str1 = String.Format("{0:00}", i);
    str2 = String.Format("{0:000}", i);
}

Pour le cas i = 10:

str1: "10"
str2: "010"

J'utilise ceci, par exemple, pour effacer le texte de contrôles de libellé particuliers de mon formulaire par leur nom:

private void EmptyLabelArray()
{
    var fmt = "Label_Row{0:00}_Col{0:00}";
    for (var rowIndex = 0; rowIndex < 100; rowIndex++)
    {
        for (var colIndex = 0; colIndex < 100; colIndex++)
        {
            var lblName = String.Format(fmt, rowIndex, colIndex);
            foreach (var ctrl in this.Controls)
            {
                var lbl = ctrl as Label;
                if ((lbl != null) && (lbl.Name == lblName))
                {
                    lbl.Text = null;
                }
            }
        }
    }
}
9
jp2code

ToString peut prendre un format . essayer:

i.ToString("000");
9
Kobi

Cet article de blog est un excellent petit aide-mémoire à garder à portée de main lorsque vous essayez de formater des chaînes dans une variété de formats.

lien vers le cheval de Troie enlevé

Modifier

Le lien a été supprimé car Google avait temporairement averti que le site (ou le site associé) était susceptible de propager des logiciels malveillants. Il est maintenant hors de la liste et n'est plus signalé comme problématique. Google "SteveX String Formatting", vous trouverez le résultat de la recherche que vous pourrez consulter à votre guise.

5
Dave White

Je ne peux pas croire que personne n'ait suggéré cela:

int i = 9;
i.ToString("D2"); // Will give you the string "09"

ou

i.ToString("D8"); // Will give you the string "00000009"

Si vous voulez hexadécimal:

byte b = 255;
b.ToString("X2"); // Will give you the string "FF"

Vous pouvez même utiliser seulement "C" pour afficher comme devise si vous utilisez le symbole monétaire local. Voir ici: https://docs.Microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_String_

3
nivs1978

Vous pouvez aussi le faire de cette façon

private static string GetPaddingSequence(int padding)
{
      StringBuilder SB = new StringBuilder();
      for (int i = 0; i < padding; i++)
      {
           SB.Append("0");
      }

      return SB.ToString();
  }

public static string FormatNumber(int number, int padding)
{
    return number.ToString(GetPaddingSequence(padding));
}

Enfin, appelez la fonction FormatNumber

string x = FormatNumber(1,2);

La sortie sera 01 qui est basée sur votre paramètre de remplissage. L'augmenter augmentera le nombre de 0

0
VIjayendra