2010-11-19 35 views
24

Im mới đối với lập trình C#. Có thể ai đó xin vui lòng giải thích đoạn mã sau:Định dạng các chuỗi trong phương thức Console.WriteLine

Console.WriteLine("{0}{1,10}", "Face", "Frequency"); //Headings 
Console.WriteLine("{0,4}{1,10}",someval,anotherval); 

Tôi hiểu rằng đây in hai cột giá trị với các tiêu đề nhất định, và {0} đề cập đến đối số đầu tiên nhất định. Nhưng ý nghĩa của các chuỗi định dạng của biểu mẫu {x,y} là gì?

Trả lời

53

Nó thêm phần đệm vào bên trái. Rất hữu ích để ghi nhớ các mô hình chuỗi định dạng khác nhau là cheat sheet sau:

.NET String.Format Cheat Sheet

Giá trị dương thêm padding bên trái, tiêu cực add đệm ở bên phải

 
Sample         Generates 
String.Format("[{0, 10}]", "Foo");  [∙∙∙∙∙∙∙Foo] 
String.Format("[{0, 5}]", "Foo");  [∙∙Foo] 
String.Format("[{0, -5}]", "Foo");  [Foo∙∙] 
String.Format("[{0, -10}]", "Foo"); [Foo∙∙∙∙∙∙∙] 
+0

Cảm ơn bạn đã trả lời 0xA3. Nếu tôi hiểu chính xác, điều đó có nghĩa là {1,10} sẽ in đối số thứ hai và 10 dấu cách ngay sau nó? – Joe

+0

@ Joe: Không, đệm có nghĩa là chuỗi được lấp đầy với khoảng trắng lên đến độ dài được chỉ định, xem ví dụ trong câu trả lời của tôi. –

+2

Theo như tôi thấy, bảng lừa đảo này hoàn toàn sai! Chỉ số sai được sử dụng, và sự liên kết tích cực/tiêu cực là trái ngược với những gì thực sự xảy ra. Vì vậy, để tạo ra '[∙∙∙∙∙∙∙ Foo]', bạn thực sự làm 'String.Format (" [{0, 10}] "," Foo ");' –

3

Vui lòng kiểm tra this để có tham chiếu định dạng chuỗi rất tốt.

3

Đây là giá trị đệm ... nếu đối số không phải là độ dài được chỉ định, nó đặt dấu cách.

Ví dụ: nếu bạn có {0,10} và đối số cho {0} là "Blah", giá trị thực tế được in sẽ là "Blah<SPACE><SPACE><SPACE><SPACE><SPACE><SPACE>" ... Blah, với 6 khoảng trắng để tạo thành một chuỗi gồm 10 chiều dài

ps - không chắc chắn làm thế nào để đưa không gian thực tế trong ... cần phải nhìn lên SO faq không có nghi ngờ

8

Khi bạn nhìn thấy {x,y}, x đại diện cho chỉ số của đối số và y sự liên kết, theo quy định here. Cú pháp hoàn chỉnh như sau:

{index[,alignment][:formatString]} 
Các vấn đề liên quan