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


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+)


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,


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.


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


57

Interpolacja ciągów w stylu C # 6.0

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

Ten wygląda bardzo ładnie. Dobry sposób na uniknięcie$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin,


4

Bułka z masłem

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

3
nie wiem, dlaczego przegłosowałeś, to działa i odpowiada na pytanie operacyjne
maeneak


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"  

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

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

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.


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')

2
Niepotrzebnie mylące, szczególnie gdy istnieje bardzo proste rozwiązanie.
Juls
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.