10'un altındaki int değeri iki haneli sayı dizesine dönüştürülür


119
string strI;   

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

Burada, eğer i = 1o zaman ToStringverim"1"

Ama almak istiyorum "01"ya da"001"

Oldukça kolay görünüyor, ancak sadece

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

Derleyen ve çalışan kodu göndermek en iyisidir, tostirngdoğru değildir. Ayrıca programcılara, 0xonaltılık tabana atıfta bulunduğunuzu gösterir. "Baştaki sıfırları" arıyorsunuz.
Kobi

@Kobi üzgünüm, ana dilim İngilizce değil ve İngilizcem aslında kötü. ve İngilizcemi geliştirmek için her gün İngilizce okuluna gidiyorum. Beni anlar mısın lütfen ve düzenledimtostirng
Sungguk Lim

Bu iyi. Sadece bir ipucu. Her neyse, int.ToString, aynı DateTime.ToString.
Kobi

Yanıtlar:



12

Kabul edilen cevap iyi ve hızlı:

i.ToString("00")

veya

i.ToString("000")

Daha fazla karmaşıklığa ihtiyacınız varsa, String.Format denemeye değer:

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

İçin i = 10durumunda:

str1: "10"
str2: "010"

Örneğin, formumdaki belirli Etiket Kontrollerindeki metni ada göre temizlemek için bunu kullanıyorum:

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

Kimsenin bunu önermediğine inanamıyorum:

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

veya

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

Onaltılık istiyorsanız:

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

Para birimi simgesini yerel ayarlarsanız, para birimi olarak görüntülemek için yalnızca "C" yi bile kullanabilirsiniz. Buraya bakın: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_


5

Bu blog yazısı, dizeleri çeşitli biçimlere göre biçimlendirmeye çalışırken elinizin altında olması için harika bir küçük hile sayfasıdır.

trojan bağlantısı kaldırıldı

Düzenle

Google, sitenin (veya ilgili sitenin) kötü amaçlı yazılım yayıyor olabileceği konusunda geçici olarak uyardığı için bağlantı kaldırıldı. Artık listenin dışında ve sorunlu olarak rapor edilmiyor. Google "SteveX Dize Biçimlendirmesi" arama sonucunu bulacaksınız ve kendi takdirinize bağlı olarak onu ziyaret edebilirsiniz.


1
Bu site (şimdi) bir trojan uyarısını tetikliyor.
Henk Holterman

0

Bu şekilde de yapabilirsin

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

Son olarak, FormatNumber işlevini çağırın

string x = FormatNumber(1,2);

Çıktı, doldurma parametrenize bağlı olarak 01 olacaktır. Arttırmak 0'ların sayısını artıracaktır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.