C # แปลง int เป็นสตริงด้วยศูนย์ padding หรือไม่


438

ใน C # ฉันมีค่าจำนวนเต็มซึ่งจะต้องมีการแปลงเป็นสตริง แต่ต้องเพิ่มศูนย์ก่อน:

ตัวอย่างเช่น:

int i = 1;

เมื่อฉันแปลงเป็นสตริงมันต้องกลายเป็น 0001

ฉันจำเป็นต้องรู้ไวยากรณ์ใน C #


1
สิ่งนี้อาจช่วยคุณได้ - วิธี: วางตัวเลขด้วยศูนย์นำหน้า ขอให้โชคดี
Koonwah

คำตอบ:


708

i.ToString().PadLeft(4, '0')- โอเค แต่ใช้ไม่ได้กับจำนวนลบ
i.ToString("0000");- รูปแบบชัดเจน - ตัวระบุรูปแบบ
i.ToString("D4");สั้น
$"{i:0000}";- การแก้ไขสตริง (C # 6.0+)


28
i.ToString (). PadLeft (4, '0') ไม่ทำงานสำหรับจำนวนลบเช่น (-5) .PadLeft (4, '0') จะเป็น "00-5"
Antonio Bakula

5
วิธีการแสดงสตริงที่มีความยาวคงที่ ??
Mark Macneil Bikeio

3
@Rahul อ่านสิ่งนี้: msdn.microsoft.com/en-us/library/…
Kevdog777

2
วิธีนี้ใช้ได้กับฉัน String.Format ("{0: D4}", number);
Arthur Melo

14
การใช้ช็อตคัทรูปแบบ String ทำงานได้ดีเช่น $ "{i: D4}";
JamesSugrue


118

นี่เป็นตัวอย่างที่ดี:

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

66

คุณสามารถใช้ได้:

int x = 1;
x.ToString("0000");

26
และวิธีที่สองในการใช้สตริงรูปแบบเดียวกัน:string.Format("{0:0000}", x)
Yodan Tauber



4

peasy ง่าย ๆ

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

3
ไม่ทราบว่าเพราะเหตุใดคุณจึงลงคะแนนให้ได้ผลและตอบคำถาม ops
maeneak


2

.NET มีฟังก์ชั่นที่ใช้งานง่ายในStringคลาส เพียงใช้:

.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"  

มันจะทำงานถ้าคุณมีความยาวคงที่ของสตริงที่มีจำนวนที่เปลี่ยนแปลง ขอบคุณสำหรับสิ่งนี้! :)
Fen Ignacio


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

ที่นี่ฉันต้องการหมายเลขของฉันด้วยตัวเลข 4 หลัก ตัวอย่างเช่นถ้ามันเป็น 1 มันควรจะแสดงเป็น 0001 ถ้ามัน 11 มันควรจะแสดงเป็น 0011

ด้านล่างเป็นรหัสที่ทำให้สิ่งนี้บรรลุผล:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

ฉันใช้รหัสนี้เพื่อสร้างหมายเลขใบเสร็จรับเงินสำหรับไฟล์ PDF


1
ทำไมคุณแก้ไขคำตอบของฉันเพียงแค่ใส่ตัวอักษรหรือโครงสร้างประโยคมันจำเป็นหรือไม่นักพัฒนาควรมีความกังวลในโค้ดที่ไม่ได้อยู่ในโครงสร้างประโยค
saktiprasad swain

@ Unheilig ฉันใหม่เพื่อ stackoverflow ฉันคิดว่าจุดของฉันลดลงเมื่อคุณแก้ไขคำตอบ
saktiprasad swain

3
เมื่อคุณชี้ให้เห็นว่าคุณยังใหม่ต่อชุมชนนี้และไม่คุ้นเคยกับระบบการแก้ไขคุณไม่เสียคะแนนจากการแก้ไขที่เสนอและอนุมัติโดยชุมชน การแก้ไขที่ทำไปแล้วจะช่วยปรับปรุงคำตอบของคุณอย่างมีนัยสำคัญ
Security Hound

1
การลงคะแนนไม่ระบุชื่อจริง downvote ออกเนื่องจากไวยากรณ์ไม่ดี น่าจะอัปโหลดถ้าคุณยอมรับข้อเสนอการแก้ไข
Security Hound


-5

หากต้องการ pad int iเพื่อจับคู่ความยาวสตริงของint xเมื่อทั้งคู่สามารถเป็นลบได้:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

2
สับสนโดยไม่จำเป็นโดยเฉพาะเมื่อมีวิธีแก้ปัญหาที่ง่ายมาก
Juls
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.