正在创建固定长度的数字字符串
本文关键字:数字 数字字符 字符串 创建 | 更新日期: 2023-09-27 18:30:08
我有一定数量的文件需要程序中的文件名。文件具有固定的命名方式,即(前缀+数字).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...
您可以使用字符串来完成此操作。格式化
var result = string.Format("{0}{1:00000}{2}", prefix, number, filetype)
或者你可以使用padleft
var result = prefix + number.ToString().PadLeft('0', numDigits) + "." + extension;
或者您可以使用两者的混合:)
在这种情况下:起始数字为0,结束数字为100numDigits将是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
适用于现代.NET 5.0+(2021更新)
int myint = 100;
string zeroPadded = $"{myint:d8}"; // "00000100"
string spacePadded = $"{myint,8}"; // " 100"