指定包含0的Int的长度

时间:2014-06-03 10:57:56

标签: c# int string-length

我想将包含5个零(“00000”)的字符串转换为Int,以便可以递增。 每当我使用Convert.ToInt32()将字符串转换为整数时,该值将变为0。 如何在转换后确保整数保持固定长度?

我希望能够将值从“00000”增加到“00001”,依此类推,以便数值在数据库中显示多个数字而不是0或1。

如果你打算投票问题,你至少可以做的就是为什么要这样做...

3 个答案:

答案 0 :(得分:4)

整数是整数。没什么。

所以你拥有的int的值为零,没有办法添加任何"长度"元数据或类似的。

我猜你真正想要的是,在某个时刻 - 会再次出现string。您希望string代表您的号码,但需要5个字符和前导零。

您可以使用以下方式实现:

string s = i.ToString("00000")

修改

您说您希望数字在数据库中显示如此。 问问自己:

是否真的需要在数据库中使用它,或者只要从数据库中读取数字就足以格式化数字了?

根据具体情况,在写入或读取数据库时格式化它们(如上所示)。当然,前一种情况需要更多的存储空间,你不能真正使用SQL或类似的来执行算术运算!

答案 1 :(得分:1)

整数没有长度,它纯粹是一个数值。如果你想保持长度,你必须存储有关其他地方长度的信息。

您可以将值包装在保持属性长度的对象中。例如:

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

答案 2 :(得分:1)

正如olydis所说,int只是一个数字。它没有指定显示格式。我不建议将其用零填充在数据库中。它是int,将其存储为int

出于显示目的,在应用程序中,报告,无论如何,然后填充零。

string s = i.ToString("00000");