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

Add zero padding to string using $"{x:Dn}" notation

我非常喜欢在 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