Bir dizeye dönüştürmek için gereken bir numara var. İlk önce bunu kullandım:
Key = i.ToString();
Ama bunun garip bir sırayla sıralandığını anlıyorum ve bu yüzden sıfırlarla doldurmam gerekiyor. Bunu nasıl yapabilirim?
Bir dizeye dönüştürmek için gereken bir numara var. İlk önce bunu kullandım:
Key = i.ToString();
Ama bunun garip bir sırayla sıralandığını anlıyorum ve bu yüzden sıfırlarla doldurmam gerekiyor. Bunu nasıl yapabilirim?
Yanıtlar:
Oldukça basit:
Key = i.ToString("D2");
D
2
yazdırılacak basamak sayısı için "ondalık sayı" anlamına gelir .
string.Format("D2", value)
alırsınız D2
. bu işe yaramıyor. "{0:00}"
Bu durumda kullanmalıyız .
string.Format("{0:D2}", value)
yerine kullanmalısınız . Sadece söyleyerek string.Format("D2", ...)
Yer tutucu olmadığı için ne olursa olsun hiçbir şey değiştirmez.
value
int olduğunda çalışacağının farkındadır . Örneğin value
, bir çift ise, olması gerekirstring.Format("{0:00}", value)
String.Format'ın bazı örnek kullanımları için C # dizesi biçimlendirmesine bakın .
Aslında biçimlendirme için daha iyi bir örnek int
String.Format("{0:00000}", 15); // "00015"
veya String Interpolation kullanın :
$"{15:00000}"; // "00015"
Sabit genişliği, örneğin 10 basamaklı tutmak istiyorsanız, bunu yapın
Key = i.ToString("0000000000");
İstediğiniz kadar basamakla değiştirin.
i = 123
sonra sonuçlanır Key = "0000000123"
.
Henüz kimse bundan bahsetmediği için, C # sürüm 6 veya üstü (yani Visual Studio 2015) kullanıyorsanız , kodunuzu basitleştirmek için dize enterpolasyonunu kullanabilirsiniz . Yani kullanmak yerine string.Format(...)
, bunu yapabilirsiniz:
Key = $"{i:D2}";
kullanın:
i.ToString("D10")
Bkz. Int32.ToString (MSDN) ve Standart Sayısal Biçim Dizeleri (MSDN).
Veya kullan String.PadLeft
. Örneğin,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
İle sonuçlanır 0000000321
. RağmenString.PadLeft
negatif sayılar için çalışma olmaz.
Bkz. String.PadLeft (MSDN).
Genellikle String.Format ("format", nesne) object.ToString ("format") yerine tercih edilir. Bu nedenle,
String.Format("{0:00000}", 15);
tercih edilir,
Key = i.ToString("000000");
Deneyin:
Key = i.ToString("000000");
Şahsen, dize temsilinden ziyade, tamsayı üzerinde doğrudan sıralama yapıp yapamayacağınızı görüyorum.
Enterpolasyonlu dizeler için:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Burada benim 1 4 gibi 0001 olarak göstermek gerekir gibi 4 basamakta sınırlamak istiyorum, 11 0011 olarak göstermelidir. Aşağıda kod vardır.
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
Bu kodu Para makbuz no oluşturmak için uyguladı.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Çıktı = "00001"
EDIT: PadLeft miktarına uyacak şekilde değiştirildi