【问题标题】:How can I pad nullable ints with zeros?如何用零填充可空整数?
【发布时间】:2014-11-27 22:50:26
【问题描述】:

有没有办法像使用普通 int 一样用零填充可为空的 int?

myInt.ToString("D3") 似乎不适用于 nullale 整数,但对于我当前的项目,我觉得我需要使用可为空的 int 以便在我的数组中获取 null 值而不是默认值 0 .

【问题讨论】:

  • 你为什么不直接使用myInt.Value.ToString("D3")
  • 这似乎有效。太感谢了。我在编程方面还是个新手,所以我一直在努力解决问题。我目前正在尝试一个项目,我从 int?[] intArray[50] 开始,如果它的默认值为 0,那么它只会输出为 null(空白)。我的问题在于我希望输出(3 位)用前导 0 填充,因此是 ToString("D3") 但我不太清楚如何制作它,以便它能够输出我的格式如果值仍然为空,则希望以及空值。有没有办法做到这一点?

标签: c# int nullable


【解决方案1】:

那是因为int? 实际上是Nullable<T>,这里Tint

调用ToString 将调用Nullable 结构,而不是intNullable<T> 不知道 ToString 的重载,int 有。

你必须先获取整数值:

myInt.GetValueOrDefault(0).ToString("D3")

【讨论】:

    【解决方案2】:

    int 从来没有前导零,它只有一个值。 ìnt 的字符串表示可以包含它们。如果它没有值,您可以使用 null-coalescing 运算符将 nullable-int 转换为 0:

    int? nullableInt = null;
    string number = (nullableInt ?? 0).ToString("D3"); // 000
    

    或使用String.PadLeft:

    number = (nullableInt ?? 0).ToString().PadLeft(3, '0');
    

    【讨论】:

      【解决方案3】:

      您必须对值执行该操作:

      myInt.Value.ToString("D3")
      

      例子:

      int? myInt = 3;
      Console.WriteLine(myInt.Value.ToString("D3")); // Outputs 003
      

      【讨论】:

      • 如果myIntnull,它会输出什么?
      • @TimSchmelter 对,他只需要考虑这一点。我的例子并非包罗万象。