Il valore int inferiore a 10 viene convertito in una stringa di due cifre


119
string strI;   

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

qui dentro, se i = 1poi ToStringcede"1"

Ma voglio ottenere "01"o"001"

Sembra abbastanza facile, ma c'è solo un articolo su

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

È meglio inserire un codice che compili e funzioni, tostirngnon è corretto. Inoltre, ai programmatori, 0xsuggerisce che ti riferisci alla base esadecimale. Stai cercando "zeri iniziali".
Kobi

@ Kobi mi dispiace, la mia lingua madre non è l'inglese e il mio inglese è effettivamente pessimo. e vado alla scuola di inglese ogni giorno per migliorare il mio inglese. Per favore, potresti capirmi. e ho modificato iltostirng
Sungguk Lim

Va bene. Solo un suggerimento. Ad ogni modo, int.ToString può assumere un formato, proprio come DateTime.ToString.
Kobi

Risposte:



12

La risposta accettata è buona e veloce:

i.ToString("00")

o

i.ToString("000")

Se hai bisogno di più complessità, vale la pena provare String.Format :

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

Per il i = 10caso:

str1: "10"
str2: "010"

Lo uso, ad esempio, per cancellare il testo su particolari controlli etichetta sul mio modulo per nome:

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


6

Non posso credere che nessuno l'abbia suggerito:

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

o

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

Se vuoi esadecimale:

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

Puoi anche usare solo "C" per visualizzare come valuta se il simbolo della valuta locale. Vedi qui: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_


5

Questo post del blog è un piccolo grande cheat-sheet da tenere a portata di mano quando si cerca di formattare le stringhe in una varietà di formati.

collegamento al trojan rimosso

modificare

Il collegamento è stato rimosso perché Google ha temporaneamente avvertito che il sito (o il sito correlato) potrebbe aver diffuso software dannoso. Ora è fuori elenco e non è più segnalato come problematico. Google "SteveX String Formatting" troverai il risultato della ricerca e potrai visitarlo a tua discrezione.


1
Quel sito (ora) attiva un avviso di trojan.
Henk Holterman

0

Puoi farlo anche in questo modo

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

Infine chiama la funzione FormatNumber

string x = FormatNumber(1,2);

L'output sarà 01 che si basa sul parametro di riempimento. Aumentandolo aumenterà il numero di 0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.