[英]Creating fixed length numeric string
我有一定数量的文件,我的程序中需要这些文件的文件名。 这些文件具有固定的命名方式,即(前缀+数字)。jpg。 例如: head001.jpg
, head002.jpg
, head003.jpg
等等等等。
最后,数字的数量可能会有所不同 - 因此程序具有变量来更改文件命名的开始位置、结束位置以及命名中使用的数字位数。 例如:第二种情况可能是 - tail00001.jpg
, tail00002.jpg
, tail00003.jpg
等直到tail00100.jpg
在这种情况下:开始数字将是 0,结束数字将是 100 和 numDigits 将是 5
在 C++ 中,我已经看到这种格式是按如下方式完成的:
format <<prefix<<"%0"<<numDigits<<"d."<<filetype;
//其中format
是一个stringstream
但是,我不太确定在 C# 中执行此操作的最佳方法,并且想知道如何解决此问题。
只需使用string.Format
,并带有一个精度说明符,说明您想要多少位数:
string name = string.Format("tail{0:d6}.jpg", index);
有关标准数字字符串格式的更多详细信息,请参阅 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
。
字符串有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...
..在这种情况下:开始数字将为 0,结束数字将为 100,numDigits 将为 5
您可以使用String.Format
和十进制格式/精度说明符 "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
你可以使用 string.Format 来做到这一点
var result = string.Format("{0}{1:00000}{2}", prefix, number, filetype)
或者你可以使用 padleft
var result = prefix + number.ToString().PadLeft('0', numDigits) + "." + extension;
或者你可以混合使用两者:)
对于现代 .NET 5.0+ (2021 更新)
int myint = 100;
string zeroPadded = $"{myint:d8}"; // "00000100"
string spacePadded = $"{myint,8}"; // " 100"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.