题
我想将包含5个零("00000")的字符串转换为Int,以便可以递增。每当我使用Convert将字符串转换为整数时。ToInt32(),值变为0。如何确保整数在转换后保持固定长度?
我希望能够将值从"00000"递增到"00001"等,以便该值在数据库中出现那么多位而不是0或1。
如果你要向下投票的问题,至少你可以做的是留下你为什么这样做的反馈。..
解决方案
整数是一个整数。没有。
因此,您具有零值为零的int
,无法添加任何“长度”元数据或类似。
我猜你真正想要的是,那个 - 在某些时候 - 将有一个string
再次。您希望将该生成古代替代代表代表您的号码,但有5个字符和前导零。
您可以使用:
string s = i.ToString("00000")
.
编辑
你说你希望数字在你的数据库中看起来像那样。 问问自己:
它真的需要在db中读取它,或者在从数据库中读取它们时,它是否足以格式化数字?
取决于此,在写入或从DB读取时格式化它们(如上所示)。当然,前案例需要更多的存储空间,您无法真正使用SQL或类似于执行算术运算!
其他提示
整数没有长度,它纯粹是一个数字值。如果要保留长度,则必须将有关其余的长度的信息存储在其他地方。
您可以将值包装在属性中保持长度的对象中。示例:
public class FormattedInt {
private int _value, _length;
public FormattedInt(string source) {
_length = source.Length;
_value = Int32.Parse(source);
}
public void Increase() {
_value++;
}
public override string ToString() {
return _value.ToString(new String('0', _length));
}
}
.
用法:
FormattedInt i = new FormattedInt("0004");
i.Increase();
string s = i.ToString(); // 0005
. 正如olydis上面所说,一个 int
只是一个数字。它没有指定 显示格式.我也不建议将它用零填充存储在数据库中。这是一个 int
, ,将其存储为 int
.
为了显示的目的,在应用程序中,一个报告,什么,然后垫出零。
string s = i.ToString("00000");
不隶属于 StackOverflow