C # dolgu sıfır ile dizeye int dönüştürmek?


Yanıtlar:


708

i.ToString().PadLeft(4, '0') - tamam, ancak negatif sayılar için çalışmıyor
i.ToString("0000"); - açık form
i.ToString("D4");- kısa form biçimi belirleyicisi
$"{i:0000}";- dize enterpolasyonu (C # 6.0+)


28
PadLeft (4, '0') negatif sayılar için çalışmaz, örneğin (-5) .PadLeft (4, '0') "00-5" olacaktır
Antonio Bakula

5
sabit uzunlukta bir dize nasıl görüntülenir. ??
Mark Macneil Bikeio


2
bu şekilde benim için çalıştı String.Format ("{0: D4}", sayı);
Arthur Melo

14
Dize biçimi kısayolunu kullanmak da işe yarar örn. $ "{İ: D4}";
JamesSugrue

275
i.ToString("D4");

Biçim belirteçleri için MSDN'ye bakın .


4
bu şekilde benim için çalıştı String.Format ("{0: D4}", sayı);
Arthur Melo

118

İşte iyi bir örnek:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well

66

Kullanabilirsiniz:

int x = 1;
x.ToString("0000");

26
Ve aynı biçim dizesini kullanmanın ikinci bir yolu:string.Format("{0:0000}", x)
Yodan Tauber

57

C # 6.0 stili dize enterpolasyonu

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";

Bu çok hoş görünüyor. Önlemek için iyi bir yol$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin


4

Çantada keklik

int i = 1;
i.ToString("0###")

3
neden işe yaradığını oylama ve ops sorusunu cevaplama
bilmiyorum


2

.NET, Stringsınıfta bunu yapmak için kolay bir işleve sahiptir . Sadece kullan:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  

Değişen bir sayıya sahip sabit bir dize uzunluğunuz varsa bu işe yarar. Bunun için teşekkürler! :)
Fen Ignacio

0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055

0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);

-2

Burada numaramı 4 haneli doldurmak istiyorum. Örneğin, 1 ise 0001, 11 ise 0011 olarak göstermelidir.

Bunu gerçekleştiren kod aşağıdadır:

reciptno=1; // Pass only integer.

string formatted = string.Format("{0:0000}", reciptno);

TxtRecNo.Text = formatted; // Output=0001

Bir PDF dosyası için para makbuz numarası oluşturmak için bu kodu uyguladı.


1
? Neden sadece büyük harfle veya cümle structure.Is bunu gerekli cevabım düzenlerken bir geliştirici değil cümle yapısındaki kodunda endişe olmalıdır
saktiprasad çoban

Cevabımı düzenlediğimde puanımın azaldığını düşünüyorum.
saktiprasad swain

3
İşaret ettiğiniz gibi, bu toplulukta yenisiniz ve düzenleme sistemine aşina değilsiniz, topluluk tarafından önerilen ve onaylanan düzenlemeden hiçbir puan kaybetmediniz. Yapılan düzenlemeler cevabınızı önemli ölçüde geliştirdi
Güvenlik Hound

1
Oylama aslında anonimdir. Zayıf dilbilgisi nedeniyle aşağı oy verildi. Düzenleme teklifini kabul etseydin yok sayılır
Güvenlik Hound


-5

Her ikisinin de negatif olabileceği int izamanın dize uzunluğuna uyacak şekilde doldurmak için int x:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

2
Özellikle çok basit bir çözüm olduğunda gereksiz yere kafa karıştırıcı.
Juls
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.