ฉันมีจำนวนที่ฉันต้องการแปลงเป็นสตริง ก่อนอื่นฉันใช้สิ่งนี้:
Key = i.ToString();
แต่ฉันรู้ว่ามันถูกเรียงลำดับแปลก ๆ ดังนั้นฉันต้องใช้มันด้วยเลขศูนย์ ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันมีจำนวนที่ฉันต้องการแปลงเป็นสตริง ก่อนอื่นฉันใช้สิ่งนี้:
Key = i.ToString();
แต่ฉันรู้ว่ามันถูกเรียงลำดับแปลก ๆ ดังนั้นฉันต้องใช้มันด้วยเลขศูนย์ ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ค่อนข้างง่าย:
Key = i.ToString("D2");
D
ย่อมาจาก "ทศนิยม" 2
สำหรับจำนวนตัวเลขที่จะพิมพ์
string.Format("D2", value)
คุณจะได้รับD2
ผลลัพธ์ มันไม่ทำงาน เราต้องใช้"{0:00}"
ในกรณีนี้
string.Format("{0:D2}", value)
แทน เพียงแค่พูดว่าstring.Format("D2", ...)
จะไม่แทนที่สิ่งใดไม่ว่าจะเกิดอะไรขึ้นเนื่องจากคุณไม่มีตัวยึดตำแหน่ง
value
ก็ต่อเมื่อเป็น int value
ตัวอย่างเช่นถ้าเป็นสองเท่ามันจะต้องเป็นstring.Format("{0:00}", value)
ดูการจัดรูปแบบสตริงใน C #สำหรับตัวอย่างการใช้งานของ String.Format
จริงๆแล้วเป็นตัวอย่างที่ดีกว่าของการจัดรูปแบบ int
String.Format("{0:00000}", 15); // "00015"
หรือใช้การแก้ไขสตริง :
$"{15:00000}"; // "00015"
หากคุณต้องการคงความกว้างคงที่ไว้เช่น 10 หลักให้ทำเช่นนี้
Key = i.ToString("0000000000");
แทนที่ด้วยตัวเลขมากเท่าที่คุณต้องการ
i = 123
Key = "0000000123"
จากนั้นจะส่งผลให้
เนื่องจากยังไม่มีใครพูดถึงเรื่องนี้ถ้าคุณใช้ C # เวอร์ชั่น 6 หรือสูงกว่า (เช่น Visual Studio 2015) คุณสามารถใช้การแก้ไขสตริงเพื่อทำให้รหัสของคุณง่ายขึ้น ดังนั้นแทนที่จะใช้string.Format(...)
คุณสามารถทำสิ่งนี้:
Key = $"{i:D2}";
ใช้:
i.ToString("D10")
ดูInt32.ToString (MSDN) และสตริงรูปแบบตัวเลขมาตรฐาน (MSDN)
String.PadLeft
หรือการใช้งาน ตัวอย่างเช่น,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
0000000321
จะส่งผลให้ แม้ว่าString.PadLeft
จะไม่ได้ผลสำหรับจำนวนลบ
ดูString.PadLeft (MSDN)
โดยปกติแล้ว String.Format ("format", object) จะเหมาะสมกว่า object.ToString ("format") ดังนั้น,
String.Format("{0:00000}", 15);
เป็นที่นิยมกว่า
Key = i.ToString("000000");
ลอง:
Key = i.ToString("000000");
แม้ว่าโดยส่วนตัวแล้วฉันจะดูว่าคุณไม่สามารถเรียงลำดับบนจำนวนเต็มโดยตรงแทนที่จะแสดงสตริงได้หรือไม่
สำหรับสตริงที่สอดแทรก:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
ที่นี่ฉันต้องการไม่ จำกัด จำนวน 4 หลักเช่นถ้าเป็น 1 ควรแสดงเป็น 0001 ถ้าเป็น 11 ควรแสดงเป็น 0011 .. ด้านล่างเป็นรหัส
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
ฉันใช้รหัสนี้เพื่อสร้างหมายเลขรับเงิน
int num=1;
string number=num.ToString().PadLeft(4, '0')
เอาท์พุท = "00001"
แก้ไข: เปลี่ยนเพื่อให้ตรงกับจำนวน PadLeft