【问题标题】:Pad with leading zeros [duplicate]用前导零填充 [重复]
【发布时间】:2011-03-28 10:33:39
【问题描述】:

如何用前导零填充我的整数变量。 就像我有一个值为 20 的整数 abc 但我希望它是 '0000020'。

代码:

quarterlyReportDataCMMS.QRTrailerRecord.FileRecordCount = Convert.ToInt32(refEligibleClaimants.Count);

【问题讨论】:

    标签: c#


    【解决方案1】:

    没有带填充的整数这样的概念。你有几条腿 - 2、02 或 002?他们是同一个号码。事实上,即使是“2”部分也不是数字的一部分,它只与十进制表示相关。

    如果您需要填充,这表明您正在谈论数字的文本表示...即字符串。

    您可以使用字符串格式化选项来实现,例如

    string text = value.ToString("0000000");
    

    string text = value.ToString("D7");
    

    【讨论】:

    • 我试过了,但它说不能隐式地将类型字符串转换为 int
    • @Ashutosh:不,关键是你想要它作为一个字符串。没有填充 int 这样的概念 - int 只是一个数字
    • @Jon 但您的代码正在尝试将字符串隐式转换为 int... (int text = value.ToString("000"))
    • @Steven:Doh - 会解决这个问题的。我是一个傻瓜!向@Ashutosh 和任何尝试过此操作的人道歉。我会羞愧地低下头:(
    • @Jon:没问题,John..我以某种方式修复了它。我是这个领域的新手,幸运地得到了实习,所以我正在学习所有这些东西来满足期望。谢谢
    【解决方案2】:

    您可以使用字符串数据类型来执行此操作。使用PadLeft 方法:

    var myString = "1";
    myString = myString.PadLeft(myString.Length + 5, '0');
    

    000001

    【讨论】:

    • 或者,如果您想要固定数量的位置,其中 5 是放置的总数,替换为 0:myString.PadLeft(5, '0')
    • 虽然这个答案很有用,但除非你从字符串开始,否则这不是办法。
    【解决方案3】:

    整数值是数字的数学表示,忽略前导零。

    你可以得到一个带有前导零的 字符串,如下所示:

    someNumber.ToString("00000000")
    

    【讨论】:

      【解决方案4】:

      前导零的概念对于 int 是没有意义的,这就是你所拥有的。只有在打印出来或以其他方式呈现为字符串时才有意义。

      Console.WriteLine("{0:0000000}", FileRecordCount);
      

      忘记结束双引号了!

      【讨论】:

        【解决方案5】:

        【讨论】:

          猜你喜欢
          • 2013-01-02
          • 2012-04-21
          • 2015-05-21
          • 2014-09-19
          • 2011-10-09
          • 2021-12-18
          • 2010-11-19
          • 1970-01-01
          • 2017-01-17
          相关资源
          最近更新 更多