C # chuyển đổi int thành chuỗi với số không đệm?


Câu trả lời:


706

i.ToString().PadLeft(4, '0')- được, nhưng không hoạt động đối với số âm
i.ToString("0000");- biểu mẫu rõ ràng
i.ToString("D4");- công cụ xác định định dạng biểu mẫu ngắn
$"{i:0000}";- nội suy chuỗi (C # 6.0+)


27
i.ToString (). PadLeft (4, '0') KHÔNG hoạt động đối với các số âm, ví dụ (-5) .PadLeft (4, '0') sẽ là "00-5"
Antonio Bakula

5
Làm thế nào để hiển thị một chuỗi với độ dài cố định. ??
Mark Macneil Bikeio

3
@Rahul Đọc cái này: msdn.microsoft.com/en-us/l
Library / từ

2
cách này hiệu quả với tôi String.Format ("{0: D4}", số);
Arthur Melo

14
Sử dụng phím tắt định dạng Chuỗi cũng hoạt động, ví dụ $ "{i: D4}";
JamesSugrue

274
i.ToString("D4");

Xem MSDN trên định dạng định dạng.


4
cách này hiệu quả với tôi String.Format ("{0: D4}", số);
Arthur Melo

118

Đây là một ví dụ tốt:

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

Bạn có thể dùng:

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

26
Và cách thứ hai để sử dụng chuỗi định dạng tương tự:string.Format("{0:0000}", x)
Yodan Tauber

57

Nội suy chuỗi kiểu C # 6.0

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

Cái này nhìn rất đẹp. Cách tốt để tránh$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin


4

Dễ như ăn bánh

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

3
không biết tại sao bạn lại bình chọn nó hoạt động và trả lời câu hỏi của ops
maeneak


2

.NET có một chức năng dễ dàng để làm điều đó trong Stringlớp. Chỉ dùng:

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

Điều này hoạt động nếu bạn có một độ dài chuỗi cố định với một số thay đổi. Cám ơn vì cái này! :)
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

Ở đây tôi muốn pad số của tôi với 4 chữ số. Chẳng hạn, nếu là 1 thì nó sẽ hiển thị là 0001, nếu là 11 thì nó sẽ hiển thị là 0011.

Dưới đây là mã thực hiện điều này:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Tôi đã triển khai mã này để tạo số nhận tiền cho tệp PDF.


1
Tại sao bạn chỉnh sửa câu trả lời của tôi chỉ bằng chữ in hoa hoặc cấu trúc câu. Có cần thiết không? Một nhà phát triển nên quan tâm đến mã không có trong cấu trúc câu
saktiprasad swain

@Unheilig Tôi mới sử dụng stackoverflow. Tôi nghĩ rằng điểm của tôi bị giảm khi bạn chỉnh sửa câu trả lời của mình.
saktiprasad thề

3
Như bạn chỉ ra, bạn là người mới đối với cộng đồng này và không quen thuộc với hệ thống chỉnh sửa, bạn đã không mất điểm nào từ bản chỉnh sửa được đề xuất và phê duyệt bởi cộng đồng. Các chỉnh sửa đã được thực hiện thực sự cải thiện đáng kể câu trả lời của bạn
Security Hound

1
Bỏ phiếu thực sự là ẩn danh. Các downvote đã được ban hành vì ngữ pháp kém. Sẽ được nâng cấp nếu bạn đã chấp nhận đề xuất chỉnh sửa
Security Hound


-5

Để đệm int iđể khớp với độ dài chuỗi int x, khi cả hai có thể âm:

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

2
Khó hiểu một cách không cần thiết đặc biệt là khi có một giải pháp rất đơn giản.
Juls
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.