C # przekształcić int na ciąg z zerami wypełniającymi?

438

W języku C # mam wartość całkowitą, która musi być przekazana do łańcucha, ale musi dodać zera przed:

Na przykład:

int i = 1;

Kiedy przekonwertuję go na ciąg, musi on mieć postać 0001

Muszę znać składnię w C #.

Pinu
źródło
1
Może ci to pomóc - Jak: Wypełnić liczbę wiodącymi zerami . Powodzenia
Koonwah

Odpowiedzi:

708

i.ToString().PadLeft(4, '0')- w porządku, ale nie działa dla liczb ujemnych
i.ToString("0000");- jawna forma
i.ToString("D4");- specyfikator formatu krótkiego
$"{i:0000}";- interpolacja ciągów (C # 6.0+)

Sójka
źródło
28
i.ToString (). PadLeft (4, „0”) NIE działa dla liczb ujemnych, na przykład (-5). PadLeft (4, „0”) będzie miał wartość „00-5”
Antonio Bakula
5
jak wyświetlić ciąg o stałej długości. ??
Mark Macneil Bikeio,
3
@Rahul Przeczytaj to: msdn.microsoft.com/en-us/library/…
Kevdog777
2
w ten sposób działał dla mnie String.Format („{0: D4}”, liczba);
Arthur Melo
14
Używanie skrótu formatu String również działa, np. $ „{I: D4}”;
JamesSugrue
275
i.ToString("D4");

Zobacz MSDN na specyfikatory formatu.

Ryan
źródło
4
w ten sposób działał dla mnie String.Format („{0: D4}”, liczba);
Arthur Melo
118

Oto dobry przykład:

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
Denys Wessels
źródło
66

Możesz użyć:

int x = 1;
x.ToString("0000");
Yodan Tauber
źródło
26
I drugi sposób na użycie tego samego ciągu formatu:string.Format("{0:0000}", x)
Yodan Tauber
57

Interpolacja ciągów w stylu C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr Blowhard
źródło
Ten wygląda bardzo ładnie. Dobry sposób na uniknięcie$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin,
18
i.ToString("0000");
Justin Niessner
źródło
4

Bułka z masłem

int i = 1;
i.ToString("0###")
maeneak
źródło
3
nie wiem, dlaczego przegłosowałeś, to działa i odpowiada na pytanie operacyjne
maeneak
3

Po prostu

int i=123;
string paddedI = i.ToString("D4");
Cahit Beyaz
źródło
8
Dodaj także złożoności.
Giulio Caccin,
naprawiono dla liczb ujemnych.
cahit beyaz
Naprawiono złożoność
cahit beyaz
2

.NET ma łatwą do tego funkcję w Stringklasie. Po prostu użyj:

.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"  
Hernan
źródło
Działa to, jeśli masz ustaloną długość łańcucha ze zmieniającą się liczbą. Dzięki za to! :)
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
Serge
źródło
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);
Demodave
źródło
-2

Chciałbym tutaj wpisać 4 cyfry. Na przykład, jeśli jest to 1, to powinien być pokazany jako 0001, jeśli to 11, powinien być pokazany jako 0011.

Poniżej znajduje się kod, który to osiąga:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Zaimplementowałem ten kod, aby wygenerować numer paragonu pieniężnego dla pliku PDF.

saktiprasad swain
źródło
1
Dlaczego edytujesz moją odpowiedź tylko do wielkiej litery lub struktury zdań. Czy jest to konieczne? Deweloper powinien mieć obawy w kodzie, a nie w strukturze zdań
saktiprasad swain
@ Unheilig Jestem nowy w Stackoverflow.Myślę, że mój punkt zmniejsza się, gdy edytowałem moją odpowiedź.
saktiprasad swain
3
Jak zauważyłeś, jesteś nowy w tej społeczności i nie znasz systemu edycji, nie straciłeś żadnych punktów z edycji zaproponowanej i zatwierdzonej przez społeczność. Wprowadzone zmiany znacznie poprawiły twoją odpowiedź
Security Hound
1
Głosowanie jest w rzeczywistości anonimowe. Opinia została wydana z powodu złej gramatyki. Byłbym wdzięczny, gdybyś zaakceptował propozycję edycji
Security Hound
-5

Aby int idopasować, aby dopasować długość ciągu int x, gdy oba mogą być ujemne:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
źródło
2
Niepotrzebnie mylące, szczególnie gdy istnieje bardzo proste rozwiązanie.
Juls