如何从包括零的列表中获取最后一个数字?

时间:2017-07-14 23:19:18

标签: c# .net winforms

int lastpadnum = padnumbers.Count;
int nextpadnum = lastpadnum + 1;

如果List padnumbers中的最后一个数字是191,那么在lastpadnum中,该值将为191,而在nextpadnum中,该值将为192.

但是如果在List padnumbers中,最后一个数字是" 0000000000191" 然后在lastpadnum我将只看到191.但我想得到整数" 0000000000191"并将其作为int。

然后我试了一下:

int lastpadnum = Convert.ToInt32(padnumbers[padnumbers.Count - 1]);
int nextpadnum = lastpadnum + 1;

但是当列表中的最后一个数字是" 0000000000191"我只得到了191。

最后我想计算下一个数字,但不知道怎么做。例如,最后一个数字是191,下一个数字是192。 但如果最后一个数字是00191,那么下一个数字应该是00192,如果最后一个数字是" 0000000000191"然后下一个应该是" 0000000000192"。

2 个答案:

答案 0 :(得分:1)

" 0000000000191"不是一个int。这是一个字符串。类型int的变量永远不包含前导零,也不包含任何格式信息。当你打印出来时,它会被隐式或显式地转换为字符串;不可能逐字打印int,因为它实际上是以二进制格式保存的。

如果您想要前导零,则需要转换为字符串。如果你想要一些具有前导零的原始值的前导零,你需要保留该值;转换为int会自动消除所有格式信息。

话虽如此,如果你有一个包含191的变量并且你想将它显示为0000000000191,你只需要格式化为字符串,例如

int someValue = 191;
int valueString = someValue.ToString("0000000000000");
Console.Writeline(valueString);

如果您尝试以字符串格式维护序列,可以转换为int,increment,然后转换回来,如下所示:

string lastpadstring = padnumbers[padnumbers.Count - 1];
int lastpadnum = Convert.ToInt32(lastpadstring);
int nextpadnum = lastpadnum + 1;
string nextpadstring = nextpadnum.ToString(new String('0', lastpadstring.Length));

答案 1 :(得分:1)

191和00191是相同的数字。看起来你要做的就是取一个零填充数字的字符串,在数字上加一,然后产生一个长度相同的新的零填充字符串。看看下面的代码,看看它是否符合您的要求:

string lastpadnum = "0000000000191";
int desiredLength = lastpadnum.Length;
int nextnum = Convert.ToInt32(lastpadnum) + 1;
string nextpadnum = nextnum.ToString().PadLeft(desiredLength, '0');
Console.WriteLine(nextpadnum);

// Output:
// 0000000000192