2010-08-26 58 views

Trả lời

4

Không, String.Format không hỗ trợ các nhà điều hành sao. Bạn sẽ cần phải sử dụng một trong hai chuỗi nối

Console.WriteLine("{0:D" + myPrecision.ToString() + "}",1); 

hoặc lồng String.Format s

Console.WriteLine(String.Format("{{0:D{0}}}", 4), 1); 
2

Có điều này là có thể. Bạn chỉ cần thêm số chính xác sau khi trình định dạng định dạng. Ví dụ:

Console.WriteLine("{0:D4}",1); // Outputs 0001; 

Công cụ sửa đổi độ chính xác nào cụ thể cho loại định dạng được chọn. Trong trường hợp này, D là viết tắt của đầu ra thập phân. Đây là một liên kết đến các loại định dạng số và độ chính xác có nghĩa là gì đối với mỗi định dạng số.

+0

Không, điều tôi muốn là: Console.WriteLine ("{0: D *}", 1,4); // Đầu ra 0001; – Sprintstar

+0

Vì vậy, câu trả lời cho câu hỏi của bạn là không, @Sprintstar, C# triển khai cú pháp tương tự với cùng chức năng. –

4

Định dạng chuỗi định dạng nên làm các trick:

var number = 1; 
var width = 4; 
Console.WriteLine(String.Format("{{0:D{0}}}", width), number); 

Nó sẽ ra 0001.

Lưu ý cách {{}} được sử dụng để thoát khỏi {} trong chuỗi định dạng.

+2

+1 để giải thích cú pháp của dấu ngoặc thoát. – Heinzi

0

Để định dạng chuỗi được căn trái cho độ dài được chỉ định.

int len = 20; 
string fmt = string.Format("{{0,-{0}}}", len); 
string name = string.Format(fmt, "a persons name"); 

hoặc

name.PadRight(len); 

Kết quả phải là một tên được đệm ở bên phải với tổng chiều dài 20 ký tự.

1

Cách giải quyết của tôi tương tự như cách Qt triển khai QString::arg(). Tôi chỉ cần đặt một trình giữ chỗ và sau đó thay thế nó bằng giá trị của numericPrecision.

numericPrecision = "N2"; 
var summary = string.Format(
    "{0}: {1:_np_}, {2}: {3:_np_}, {4}: {5:_np_}".Replace("_np_", numericPrecision), 
    title1, value1, 
    title2, value2, 
    title3, value3); 
Các vấn đề liên quan