从字符串值中递增数字

4

由于某种原因,我的应用程序中有两个5位数。

以下代码会给你一个简要的想法。

string s = "00001"; // Initially stored somewhere.
//Operation start
string id = DateTime.Now.ToString("yy") + DateTime.Now.AddYears(-1).ToString("yy") + s;
//Operation end

//Increment the value of s by 1. i.e 00001 to 00002

可以通过将s的值转换为int并将其增加1来轻松完成,但在所有这些操作之后,我还必须将s的增加值存储为5位数,以便它变成"00002"

这件事让我感到痛苦...


1
你有什么问题? - ken2k
我不明白存储字符串“0000x”是要求还是你的痛苦。 - Larry
5个回答

13

使用

string s = "00001";
int number = Convert.ToInt32(s);
number += 1;
string str = number.ToString("D5");

至少获得5位数。

"D"(或十进制)格式说明符

如果需要,将使用零填充数字的左侧以生成精度说明符给定的数字位数。 如果未指定精度说明符,则默认值是表示整数的最小值,而不带前导零。


1
如果喜欢Habib的答案是错的,那我宁愿一错再错 :) - Soner Gönül
1
太好了,感谢你 @SonerGönül - Habib

7

这对我来说似乎有效。

string s = "00001";
int i = Int32.Parse(s);
i++;
s = i.ToString("D" + s.Length);

1
所以我想你想知道如何将一个int转换为5位数的string
你可以这样做:
int i = 1;
string s = i.ToString("D5");
//s = "00001"

这里有很多格式示例


0
使用 String.Format() 来实现这个功能:
string str = String.Format({0:#####}, s);

点击这里


0

使用PadLeft函数可以实现此功能:

int i = 1; // Initially stored somewhere.
//Operation start
string id = DateTime.Now.ToString("yy") + DateTime.Now.AddYears(-1).ToString("yy") + i.ToString().PadLeft(5, '0');
//Operation end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接