int Wert unter 10 in zweistellige Zahl konvertieren

118
string strI;   

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

hier, wenn i = 1dann ToStringergibt"1"

Aber ich will "01"oder bekommen "001"

Es sieht ganz einfach aus, aber es gibt nur Artikel darüber

datetime.ToString("yyyy-MM-dd")`
Sungguk Lim
quelle
Es ist am besten, Code zu posten, der kompiliert und ausgeführt wird, tostirngwas nicht richtig ist. Programmierern wird außerdem 0xempfohlen, sich auf die hexadezimale Basis zu beziehen. Sie suchen nach "führenden Nullen".
Kobi
@Kobi sorry, meine Muttersprache ist nicht Englisch und mein Englisch ist eigentlich schlecht. und ich gehe jeden Tag zur Englischschule, um mein Englisch zu verbessern. Könnten Sie mich bitte verstehen? und ich habe dietostirng
Sungguk Lim
Das ist okay. Nur ein Hinweis. Wie auch immer, int.ToString kann ein Format annehmen, genau wie DateTime.ToString.
Kobi

Antworten:

12

Die akzeptierte Antwort ist gut und schnell:

i.ToString("00")

oder

i.ToString("000")

Wenn Sie mehr Komplexität benötigen, ist String.Format einen Versuch wert:

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

Für den i = 10Fall:

str1: "10"
str2: "010"

Ich verwende dies zum Beispiel, um den Text auf bestimmten Beschriftungssteuerelementen in meinem Formular nach Namen zu löschen:

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
quelle
6

Ich kann nicht glauben, dass niemand dies vorgeschlagen hat:

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

oder

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

Wenn Sie hexadezimal wollen:

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

Sie können sogar nur "C" verwenden, um als Währung anzuzeigen, wenn Sie das Währungssymbol des Gebietsschemas verwenden. Siehe hier: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_

nivs1978
quelle
5

Dieser Blog-Beitrag ist ein großartiger kleiner Spickzettel, den Sie beim Formatieren von Zeichenfolgen in verschiedenen Formaten immer zur Hand haben sollten.

Link zum Trojaner entfernt

Bearbeiten

Der Link wurde entfernt, weil Google vorübergehend gewarnt hat, dass die Website (oder eine verwandte Website) möglicherweise schädliche Software verbreitet hat. Es ist jetzt von der Liste gestrichen und wird nicht mehr als problematisch gemeldet. Google "SteveX String Formatierung" Sie finden das Suchergebnis und können es nach eigenem Ermessen besuchen.

Dave White
quelle
1
Diese Seite löst (jetzt) ​​eine Trojaner-Warnung aus.
Henk Holterman
0

Sie können es auch so machen

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

Rufen Sie abschließend die Funktion FormatNumber auf

string x = FormatNumber(1,2);

Die Ausgabe ist 01, basierend auf Ihrem Auffüllparameter. Durch Erhöhen wird die Anzahl der Nullen erhöht

VIjayendra
quelle