Mam numer, który muszę przekonwertować na ciąg. Najpierw użyłem tego:
Key = i.ToString();
Ale zdaję sobie sprawę, że jest sortowane w dziwnej kolejności, więc muszę uzupełnić je zerami. Jak mogłem to zrobić?
Mam numer, który muszę przekonwertować na ciąg. Najpierw użyłem tego:
Key = i.ToString();
Ale zdaję sobie sprawę, że jest sortowane w dziwnej kolejności, więc muszę uzupełnić je zerami. Jak mogłem to zrobić?
Odpowiedzi:
Raczej prosty:
Key = i.ToString("D2");
D
oznacza „liczbę dziesiętną”, 2
czyli liczbę cyfr do wydrukowania.
string.Format("D2", value)
, otrzymasz D2
wynik. to nie działa. "{0:00}"
W tym przypadku musimy użyć .
string.Format("{0:D2}", value)
. Samo powiedzenie string.Format("D2", ...)
niczego nie zastąpi bez względu na wszystko, ponieważ nie masz symbolu zastępczego.
value
jest int. value
Na przykład, jeśli jest podwójny, będzie musiał byćstring.Format("{0:00}", value)
Zobacz Formatowanie ciągów w C # dla niektórych przykładowych zastosowań String.Format
Właściwie lepszy przykład formatowania int
String.Format("{0:00000}", 15); // "00015"
lub użyj interpolacji ciągów :
$"{15:00000}"; // "00015"
Jeśli chcesz zachować stałą szerokość, na przykład 10 cyfr, zrób to w ten sposób
Key = i.ToString("0000000000");
Zastąp tyle cyfr, ile chcesz.
i = 123
spowoduje następnie Key = "0000000123"
.
Ponieważ nikt jeszcze o tym nie wspominał, jeśli używasz C # w wersji 6 lub nowszej (tj. Visual Studio 2015), możesz użyć interpolacji ciągów w celu uproszczenia kodu. Zamiast używać string.Format(...)
, możesz po prostu to zrobić:
Key = $"{i:D2}";
posługiwać się:
i.ToString("D10")
Zobacz Int32.ToString (MSDN) i Standardowe ciągi formatu liczbowego (MSDN).
Lub użyj String.PadLeft
. Na przykład,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
Spowodowałoby to 0000000321
. Chociaż String.PadLeft
nie działałoby dla liczb ujemnych.
Zobacz String.PadLeft (MSDN).
Zwykle String.Format („format”, obiekt) jest lepszy niż obiekt.ToString („format”). W związku z tym,
String.Format("{0:00000}", 15);
jest lepszy niż
Key = i.ToString("000000");
Próbować:
Key = i.ToString("000000");
Osobiście jednak sprawdziłbym, czy nie można posortować liczb całkowitych bezpośrednio zamiast reprezentacji ciągu.
W przypadku interpolowanych ciągów:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Tutaj chcę, aby moje ograniczenie nie było czterocyfrowe, np. Jeśli to 1, powinno być pokazane jako 0001, jeśli to 11, powinno być pokazane jako 0011 .. Poniżej znajduje się kod.
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
Zaimplementowałem ten kod, aby wygenerować nr paragonu.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Wyjście = „00001”
EDYCJA: Zmieniono, aby pasowała do kwoty PadLeft