【问题标题】:Convert int (number) to string with leading zeros? (4 digits) [duplicate]将int(数字)转换为带有前导零的字符串? (4位)[重复]
【发布时间】:2011-12-11 07:54:40
【问题描述】:

可能重复:
Number formatting: how to convert 1 to "01", 2 to "02", etc.?

如何使用以下方案将int 转换为string

  • 1 转换为 0001
  • 123 转换为 0123

当然,字符串的长度是动态的。对于此示例,它是:

int length = 4;

我怎样才能像这样转换?

【问题讨论】:

标签: c# c#-4.0


【解决方案1】:

像这样使用String.PadLeft

var result = input.ToString().PadLeft(length, '0');

【讨论】:

  • c=1 a="%03d"%(c) 这很好用
  • 这不是一个好的解决方案。使用它,您必须找出数字的当前长度并添加适量的零。例如。 12 有 2 个零,123 有 1 个零。使用 .ToString("Dx") 会好得多。
  • 这不是真的。 PadLeft 将字母总数作为参数,而不是要添加的字母。所以 "1".PadLeft(4, '0') 是 "0001"。
  • 不是一个好的模式,你分配和复制字符串两次,只是使用你知道的最天真的解决方案。 ToString 有一个专门用于此目的的参数,使用它。
  • 下面的杰夫斯解决方案会更好
【解决方案2】:

使用您可用的格式选项,使用Decimal 格式字符串。与直接字符串操作相比,它更加灵活,几乎不需要维护。

要使用至少 4 位数字表示字符串:

int length = 4;
int number = 50;
string asString = number.ToString("D" + length); //"0050"

【讨论】:

    【解决方案3】:

    使用 ToString() 方法 - standardcustom 数字格式字符串。查看 MSDN 文章 How to: Pad a Number with Leading Zeros

    string text = no.ToString("0000");
    

    【讨论】:

    • 这个直接清晰简单。
    • 字符串文本 = no:0000; // 相同但更短
    【解决方案4】:

    val.ToString("".PadLeft(length, '0'))

    【讨论】:

    • 使用新的 C# 字符串插值,在此示例中长度为 4 var paddedValue = $"{intValue:D4}"
    猜你喜欢
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2014-07-17
    • 2019-12-03
    • 2011-05-18
    • 2017-04-09
    相关资源
    最近更新 更多