【问题标题】:Counter with 5 digits5位计数器
【发布时间】:2013-09-01 13:01:04
【问题描述】:

我想要 5 位数字的计数器,例如:00000、00001、00002.... 我用这个命令创建文件:

FileStream Fl = File.Create(@"C:\\U\\L\\Desktop\\" + "i" + (counter) + ".xml");

计数器的定义:

int counter;

我的增量: counter++;

你有什么想法,我如何制作 5 位数的计数器?感谢所有的想法:)

【问题讨论】:

标签: c# filenames counter auto-increment


【解决方案1】:

您可以使用标准格式字符串:

... + counter.ToString("D5") + ...

或者用Format方法:

string.Format("... {0:D5} ...", counter)

对于 C# 6.0 (Visual Studio 2015) 及更高版本的 string interpolation,将是:

$"... {counter:D5} ..."

【讨论】:

    【解决方案2】:

    您可以将PadLeftString.Format 一起使用。请注意,如果您构建路径,则应使用Path.Combine

    int counter = 0;
    for (int i = 0; i < 1000; i++)
    {
        string counterText = (counter++).ToString().PadLeft(5, '0');
        string fileName = string.Format("i{0}.xml", counterText);
        string fullName = Path.Combine(@"C:\U\L\Desktop\", fileName);
        FileStream Fl = File.Create(fullName);
        // ...
    }
    

    【讨论】:

    • 虽然我同意使用Path.Combine 是可行的方法,但这实际上并不能回答问题......
    • 我认为你需要{0:D5}
    • @JeppeStigNielsen + Nolonar:谢谢。编辑我的答案以改用PadLeft
    • @JeppeStigNielsen:有几种方法可以做到这一点。如果可以的话,我更喜欢PadLeft,因为它更明确。
    • 虽然string.PadLeft() 适用于这个特定的例子,但它对于负数来说非常失败。只是说';)
    【解决方案3】:

    您可以使用 ToString 函数:

    counter.ToString("00000");
    

    【讨论】:

      【解决方案4】:

      应该这样做

      int counter = 5;
      string asString = counter.ToString("D5");
      

      asString = string.Format("{0:00000}", counter);
      

      输出将是00005

      【讨论】:

        【解决方案5】:

        你的意思是这样的:

          counter.ToString().PadLeft(5, '0')
        

        【讨论】:

        • 一般你不应该使用PadLeft(),因为它不适用于负数。这对 OP 的要求很好,而且您似乎不太可能需要用前导零填充负数,但我认为值得指出这一点。
        【解决方案6】:

        在将计数器转换为字符串时,您只需要使用适当的格式规范。

        试试这个:

        string counterString = counter.ToString("00000");
        

        或(等效):

        string counterString = counter.ToString("d5");
        

        【讨论】:

          【解决方案7】:

          关于custom numeric format strings

          int value = 123;
          Console.WriteLine(value.ToString("00000"));
          // Displays 00123 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-11
            • 2020-12-07
            • 2012-03-10
            • 2015-04-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多