使用printf我可以使用*将精度值指定为额外参数。 C#String.Format中是否存在相同的功能?
编辑例如:
Console.WriteLine("{0:D*}",1,4); // Outputs 0001
答案 0 :(得分:4)
不,String.Format不支持星号运算符。您需要使用字符串连接
Console.WriteLine("{0:D" + myPrecision.ToString() + "}",1);
或嵌套String.Format
s
Console.WriteLine(String.Format("{{0:D{0}}}", 4), 1);
答案 1 :(得分:4)
格式化格式字符串应该可以解决问题:
var number = 1;
var width = 4;
Console.WriteLine(String.Format("{{0:D{0}}}", width), number);
它将输出0001
。
请注意{{
和}}
如何用于在格式字符串中转义{
和}
。
答案 2 :(得分:2)
是的,这是可能的。您只需要在格式说明符后添加精度数字。例如
Console.WriteLine("{0:D4}",1); // Outputs 0001;
精度修饰符的作用特定于所选的格式类型。在这种情况下,D代表十进制输出。以下是数字格式类型的链接以及每种格式的精度含义。
答案 3 :(得分:1)
我的解决方法类似于Qt如何实现QString::arg()
。我只是放了一个占位符,然后将其替换为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);
答案 4 :(得分:0)
格式化左对齐指定长度的字符串。
int len = 20;
string fmt = string.Format( "{{0,-{0}}}", len );
string name = string.Format( fmt, "a persons name" );
或
name.PadRight( len );
结果应该是在右边填充的名称,总长度为20个字符。