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

119
string strI;   

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

ici, si i = 1alors ToStringcède"1"

Mais je veux avoir "01"ou"001"

Cela semble assez facile, mais il n'y a qu'un article sur

datetime.ToString("yyyy-MM-dd")`
Sungguk Lim
la source
Il est préférable de publier du code qui se compile et s'exécute, ce tostirngn'est pas correct. Aussi, aux programmeurs, 0xsuggère que vous faites référence à la base hexadécimale. Vous recherchez des "zéros non significatifs".
Kobi
@Kobi désolé, ma langue maternelle n'est pas l'anglais et mon anglais est en fait mauvais. et je vais à l'école anglaise tous les jours pour améliorer mon anglais. Pouvez-vous me comprendre. et j'ai édité letostirng
Sungguk Lim
C'est bon. Juste un indice. Quoi qu'il en soit, int.ToString peut prendre un format, tout comme DateTime.ToString.
Kobi

Réponses:

12

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'être essayé:

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 i = 10cas:

str1: "10"
str2: "010"

J'utilise ceci, par exemple, pour effacer le texte sur des contrôles d'étiquette particuliers sur mon formulaire par 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;
                }
            }
        }
    }
}
jp2code
la source
6

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

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 de l'hexadécimal:

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

Vous pouvez même utiliser simplement "C" pour afficher comme devise si vous symbole de devise locale. Voir ici: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_

nivs1978
la source
5

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 supprimé

Éditer

Le lien a été supprimé car Google a temporairement averti que le site (ou le site associé) diffusait peut-être un logiciel malveillant. 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 et vous pouvez le visiter à votre discrétion.

Dave White
la source
1
Ce site déclenche (maintenant) un avertissement de cheval de Troie.
Henk Holterman
0

Vous pouvez également 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));
}

Appelez enfin 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

VIjayendra
la source