创建固定长度数字字符串

时间:2014-11-12 07:42:12

标签: c# string

我有一定数量的文件需要我程序中的文件名。文件具有固定的命名方式,即(前缀+数字).jpg。例如:head001.jpghead002.jpghead003.jpg等等。

最后的位数可能会有所不同 - 因此程序有变量可以更改文件命名的起始位置,结束位置以及命名中使用的位数。例如:第二种情况可能是 - tail00001.jpgtail00002.jpgtail00003.jpg等,直到tail00100.jpg为止 在这种情况下:起始数字为0,结束数字为100,numDigits为5

在C ++中,我看到这种格式化的完成如下:
format <<prefix<<"%0"<<numDigits<<"d."<<filetype; //其中formatstringstream

但是,我不太确定在C#中执行此操作的最佳方法,并且想知道如何解决此问题。

5 个答案:

答案 0 :(得分:7)

只需使用string.Format精度说明符表示您想要多少位数:

string name = string.Format("tail{0:d6}.jpg", index);

有关详细信息,请参阅standard numeric string formats的MSDN文档。

您当然可以通过编程方式构建字符串格式:

string name = string.Format("tail{0:d" + digits + "}.jpg", index);

或按照Vano的建议使用PadLeft。您可能仍希望使用string.Format

string name = string.Format("tail{0}.jpg",
                            index.ToString().PadLeft(digits, '0'));

使用PadLeft的优势在于更改填充值更容易,但我想您无论如何都希望它为0

答案 1 :(得分:1)

string有 PadLeft 方法:

int n1 = 1;
string t1 = n1.ToString().PadLeft(5, '0'); // This will return 00001
int n10 = 10;
string t2 = n10.ToString().PadLeft(5, '0'); // This will return 00010 and so on...

答案 2 :(得分:0)

  

..在这种情况下:起始数字为0,结束数字为100和   numDigits为5

您可以使用String.Formatdecimal format/precision specifier "D"`以及for循环:

int start = 0;
int end = 100;
int numDigits = 5;
string name = "tail";
string extension = ".jpg";
for(int i = start; i <= end; i++)
{
    string fileName = string.Format(
        "{0}{1}{2}", name, i.ToString("D" + numDigits), extension);
    Console.WriteLine(fileName);
}

输出:

tail00000.jpg
tail00001.jpg
tail00002.jpg
tail00003.jpg
tail00004.jpg
tail00005.jpg
tail00006.jpg
tail00007.jpg
tail00008.jpg
tail00009.jpg
tail00010.jpg
....
tail100.jpg

答案 3 :(得分:0)

您可以使用string.Format

执行此操作
var result = string.Format("{0}{1:00000}{2}", prefix, number, filetype)

或者你可以使用padleft

var result = prefix + number.ToString().PadLeft('0', numDigits) + "." + extension;

或者你可以混合使用两种:)

答案 4 :(得分:0)

适用于现代 .NET 5.0+(2021 年更新)

int myint = 100;
string zeroPadded = $"{myint:d8}";      // "00000100"
string spacePadded = $"{myint,8}";      // "     100"