【问题标题】:String Format: How to add any number of zeros before string字符串格式:如何在字符串之前添加任意数量的零
【发布时间】:2015-06-23 12:40:10
【问题描述】:

我想要前面有零的字符串。

我使用这个代码:

string a = string.Format("{0:00}",7);

上面的代码给出了一个两位数字的字符串,但是如果我想要一个n 数字字符串呢?假设n = 5,我怎样才能使用string.format 得到类似0004 的东西?

【问题讨论】:

    标签: c# .net


    【解决方案1】:
    int num = 4;    
    string a = num.ToString("D4");
    

    Documentation

    【讨论】:

    • 如果是5,可以使用strings = 4.ToString("D5");
    • 感谢 Moayad,我正在使用这样的东西:string a = number.ToString("D"+length);
    【解决方案2】:

    这将打印前导 4 个零。

    int maxwidth = 5;
    Console.WriteLine(outstring.PadLeft(maxwidth, '0')); 
    

    工作fiddler sample

    【讨论】:

    • 不是一个正确的解决方案。如果输入为 115,则输出为 0000115。预期输出为 0115。
    • @MoayadMardini 感谢您的更正,更新了答案。
    • @Akbari 它的工作方式与您解释的方式相同。检查这个 [提琴手链接] (dotnetfiddle.net/E6DFG9)
    • 是的,它现在工作正常。感谢您的时间和精力。 :)
    【解决方案3】:

    为什么不做这样的事情

    string formatstring = "{0:0000}"; // or anything else I want it to be
    int i = 4; // any number I want
    strings = string.Format(formatstring, i);
    

    根据位数更改格式

    formatstring = "{0:";
    for(int x=0; x< i.ToString().Length; x++)
        formatstring += "0";
    formatstring += "}";
    

    【讨论】:

    • 格式字符串在本例中是硬编码的,但可以在程序运行时动态更改。
    • 是的,但是我应该如何以这种方式更改零的数量?假设,基于变量n,我们可能需要 7 个零。
    • string.Join("", Enumerable.Repeat("0", n)) 类似这样的东西。
    • 添加了位数的代码,@n0rd 也有一个好主意。怎么做取决于你自己。
    • 不要重复连接字符串。它很慢。它会进行大量完全不必要的内存分配。将StringBuilder 与预分配缓冲区一起使用(即使没有预分配缓冲区,它也比连接字符串更好)。
    猜你喜欢
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多