Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用$";向字符串添加零填充;{x:Dn}";符号_C#_String_String Formatting - Fatal编程技术网

C# 使用$";向字符串添加零填充;{x:Dn}";符号

C# 使用$";向字符串添加零填充;{x:Dn}";符号,c#,string,string-formatting,C#,String,String Formatting,我非常喜欢用新的$“”符号在c#中格式化字符串。因此,我想使用这个符号将一些前导零预挂起为整数 var i = 10; var s = $"{i:D4}"; 这项工作做得很好,结果是0010 但是如果零的数量或总长度是可变的呢。我如何使用这种新的符号来实现这一点 我在找这样的东西: var TotalLength = 4; // IRL it would be a calculated value. var format = "D" + TotalLength.ToString(); var

我非常喜欢用新的$“”符号在c#中格式化字符串。因此,我想使用这个符号将一些前导零预挂起为整数

var i = 10;
var s = $"{i:D4}";
这项工作做得很好,结果是0010

但是如果零的数量或总长度是可变的呢。我如何使用这种新的符号来实现这一点

我在找这样的东西:

var TotalLength = 4; // IRL it would be a calculated value.
var format = "D" + TotalLength.ToString();
var i = 10;
var s = $"{i:format}";
我试过了,但也不起作用

$"{i:{format}}"
有什么建议吗?

或者-混合你的想法和Rob的方法:

var TotalLength = 4; // IRL it would be a calculated value.
var format = TotalLength.ToString("'D'0");
var i = 10;
var s = $"{i.ToString(format)}";

根据给出的建议,我提出了两种扩展方法:

     public static String GetDnFormat(this int i)
    {
        return ((int)Math.Log10(i) + 1).ToString("'D'0");
    }

    public static String ToDnFormat(this int i, int source)
    {
        var format = source.GetDnFormat();
        return i.ToString(format);
    }
用法:

var Page = 10;
var PageCount = 124;
var PageLabel = $"{Page.ToDnFormat(PageCount)}/{PageCount}"; // result : 010/124

您可以尝试这样做:
var s=$“{i.ToString().PadLeft(totalLength,'0')}”或:
var s=i.ToString(新字符串('0',总长度))