136 votes

int valeur inférieure à 10 convertir en chaîne de caractères nombre à deux chiffres

string strI;   

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

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

Mais je veux obtenir "01" ou "001"

Ça a l'air assez facile, mais il y a seulement un article sur

datetime.ToString("yyyy-MM-dd")`

0 votes

Il est préférable de publier un code qui se compile et s'exécute, tostirng n'est pas juste. Aussi, aux programmeurs, 0x suggère que vous faites référence à la base hexadécimale. Vous cherchez des "zéros de tête".

0 votes

@Kobi désolé, ma langue maternelle n'est pas l'anglais et mon anglais est en fait mauvais. et je vais à l'école d'anglais tous les jours pour améliorer mon anglais. Pourriez-vous s'il vous plaît me comprendre. et j'ai édité le tostirng

0 votes

C'est bon. C'est juste un indice. Quoi qu'il en soit, int.ToString peut prendre un format, tout comme DateTime.ToString .

281voto

MPritch Points 2986
i.ToString("00")

ou

i.ToString("000")

en fonction de ce que vous voulez

Consultez l'article de 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

20voto

nivs1978 Points 671

Je n'arrive pas à croire que personne n'ait suggéré ça :

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 le "C" pour afficher la devise si vous utilisez le symbole de la 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_

14voto

jp2code Points 8461

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

str1: "10"
str2: "010"

Je m'en sers, par exemple, pour effacer le texte de certains contrôles d'étiquettes de mon formulaire :

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;
                }
            }
        }
    }
}

11voto

Kobi Points 65357

ToString peut prendre un format . essayez :

i.ToString("000");

5voto

Dave White Points 2896

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

lien vers le trojan supprimé

Modifier

Le lien a été supprimé car Google a temporairement signalé que le site (ou un site apparenté) pouvait diffuser un logiciel malveillant. Il a maintenant disparu 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 pourrez le visiter à votre guise.

1 votes

Ce site déclenche (maintenant) un avertissement de cheval de Troie.

0 votes

Cette réponse montre pourquoi les réponses contenant uniquement des liens sont mal vues. Sans le lien, cette réponse n'est que du texte disant "Il existe une réponse quelque part sur Internet qui pourrait vous aider".

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