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")`
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
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;
}
}
}
}
}
ToString peut prendre un format . essayer:
i.ToString("000");
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.
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_
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