如何格式化带有尾随零和前导零的字符串?

问题描述 投票:0回答:4

生成此文件所需的

ToString
格式是什么?

>     5  to 00000500
>     10 to 00001000
>     15 to 00001500
>     20 to 00002000
c# .net string-formatting tostring
4个回答
4
投票

如果您想纯粹使用

ToString
格式字符串来完成此操作,而不是也涉及乘法,那么您可以使用如下所示的内容:

string yourString = yourNumber.ToString("000000'00'");

3
投票

尝试做

(yourNum * 100).ToString("0000000");

2
投票
(number * 100).ToString("D8");

1
投票

您可以使用自定义格式提供程序来完成此操作。假设输入是一个字符串。不过,它很容易更改为任何数据类型。只需将

if (arg.GetType() == typeof(String))
更改为您想要格式化的任何内容即可。

用途:

            var five = "5";
            var ten = "10";
            var fiveteen = "15";
            var twenty = "20";

        var formatprovider = new CustomStringFormatProvider();
        var res1 = string.Format(formatprovider, "{0}", five);
        res1 = string.Format(formatprovider, "{0}", ten);
        res1 = string.Format(formatprovider, "{0}", fiveteen);
        res1 = string.Format(formatprovider, "{0}", twenty);

这是格式提供者

public sealed class CustomStringFormatProvider : IFormatProvider, ICustomFormatter
{
    public Object GetFormat(Type formatType)
    {
        if (formatType == typeof(ICustomFormatter)) return this;
        return Thread.CurrentThread.CurrentCulture.GetFormat(formatType);
    }
    public String Format(String format, Object arg, IFormatProvider formatProvider)
    {
        String s;

        IFormattable formattable = arg as IFormattable;

        if (formattable == null) s = arg.ToString();
        else s = formattable.ToString(format, formatProvider);

        if (arg.GetType() == typeof(String))
            return String.Join("",Enumerable.Repeat("0", 4).ToArray()) + s + String.Join("",Enumerable.Repeat("0", 4 - s.Length).ToArray());
        return s;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.