2011-12-11 12 views
48

Możliwe duplikaty:
Number formatting: how to convert 1 to "01", 2 to "02", etc.?Konwertuj int (liczbę) na ciąg z zerami wiodącymi? (4 cyfry)

Jak mogę przekonwertować int do string stosując następujący schemat?

  • 1 konwertuje do 0001
  • 123 konwertuje do 0123

Oczywiście, długość łańcucha jest dynamiczna. W przypadku tej próbki:

int length = 4; 

Jak mogę to zmienić?

+0

http://stackoverflow.com/questions/4432734/c-sharp-pad-left-to-string http: // stackoverflow .pl/pytania/5972949/formatowanie liczb, http://stackoverflow.com/questions/4325267/c-sharp-convert-int-to-string-z-padding-zeros –

Odpowiedz

78

Zastosowanie String.PadLeft tak:

var result = input.ToString().PadLeft(length, '0'); 
+0

c = 1 a = "% 03d" % (c) działa idealnie – shiny

+1

To nie jest dobre rozwiązanie. Używając tego, musisz obliczyć aktualną długość liczb i dodać odpowiednią liczbę zer. Na przykład. 2 zera dla 12 i 1 zera dla 123. Używanie .ToString ("Dx") jest znacznie lepsze. – Arrkaye

+1

To nie jest prawda. PadLeft przyjmuje całkowitą liczbę liter jako argument, a nie tę, którą należy dodać. Tak więc "1" .PadLeft (4, "0") to "0001". – Jens

58

pomocą opcji formatowania dostępnych dla ciebie, użyj ciąg formatu Decimal. Jest znacznie bardziej elastyczny i wymaga niewiele konserwacji, w porównaniu do bezpośredniej manipulacji łańcuchami.

Aby uzyskać reprezentację ciąg przy użyciu co najmniej 4 cyfry:

int length = 4; 
int number = 50; 
string asString = number.ToString("D" + length); //"0050" 
Powiązane problemy