【问题标题】:C# convert int to string with padding zeros?C#将int转换为带有填充零的字符串?
【发布时间】:2011-05-18 12:54:30
【问题描述】:

在 C# 中,我有一个整数值需要转换为字符串,但它需要在之前添加零:

例如:

int i = 1;

当我将它转换为字符串时,它需要变成 0001

我需要知道 C# 的语法。

【问题讨论】:

标签: c# formatting number-formatting


【解决方案1】:

i.ToString().PadLeft(4, '0') - 好的,但不适用于负数
i.ToString("0000"); - 显式形式
i.ToString("D4"); - 短格式说明符
$"{i:0000}"; - 字符串插值(C# 6.0+ )

【讨论】:

  • i.ToString().PadLeft(4, '0') 不适用于负数,例如 (-5).PadLeft(4, '0') 将为 "00-5 "
  • 如何显示固定长度的字符串。 ??
  • 这种方式对我有用 String.Format("{0:D4}", number);
  • 使用字符串格式快捷方式也可以,例如$"{i:D4}";
【解决方案2】:

你可以使用:

int x = 1;
x.ToString("0000");

【讨论】:

  • 还有第二种使用相同格式字符串的方法:string.Format("{0:0000}", x)
【解决方案3】:
i.ToString("0000");

【讨论】:

    【解决方案4】:
    i.ToString("D4");
    

    请参阅MSDN 格式说明符。

    【讨论】:

    • 这种方式对我有用 String.Format("{0:D4}", number);
    【解决方案5】:

    这是一个很好的例子:

    int number = 1;
    //D4 = pad with 0000
    string outputValue = String.Format("{0:D4}", number);
    Console.WriteLine(outputValue);//Prints 0001
    //OR
    outputValue = number.ToString().PadLeft(4, '0');
    Console.WriteLine(outputValue);//Prints 0001 as well
    

    【讨论】:

      【解决方案6】:

      简单

      int i=123;
      string paddedI = i.ToString("D4");
      

      【讨论】:

      • 固定为负数。
      • 针对复杂性进行了修复
      【解决方案7】:

      填充int i以匹配int x的字符串长度,当两者都可以为负时:

      i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
      

      【讨论】:

      • 不必要的混乱,尤其是当有一个非常简单的解决方案时。
      【解决方案8】:

      C# 6.0 风格的字符串插值

      int i = 1;
      var str1 = $"{i:D4}";
      var str2 = $"{i:0000}";
      

      【讨论】:

      • 这个看起来很不错。避免$"some text {x.ToStrig("D4")} after text"的好方法
      【解决方案9】:
      int p = 3; // fixed length padding
      int n = 55; // number to test
      
      string t = n.ToString("D" + p); // magic     
      
      Console.WriteLine("Hello, world! >> {0}", t);
      
      // outputs: 
      // Hello, world! >> 055
      

      【讨论】:

        【解决方案10】:

        在这里我想用 4 位数字填充我的号码。例如,如果它是 1 那么 它应该显示为 0001,如果是 11 则应该显示为 0011。

        以下是完成此操作的代码:

        reciptno=1; // Pass only integer.
        
        string formatted = string.Format("{0:0000}", reciptno);
        
        TxtRecNo.Text = formatted; // Output=0001
        

        我实现了这个代码来为 PDF 文件生成收款号码。

        【讨论】:

        • 你为什么只编辑我的大写字母或句子结构的答案。有必要吗?开发人员应该关注代码而不是句子结构
        • @Unheilig 我是 stackoverflow 的新手。我认为当你编辑我的答案时我的观点会降低。
        • 正如你所指出的,你是这个社区的新手,不熟悉编辑系统,你没有从社区提议和批准的编辑中失去任何分数。所做的修改实际上显着改善了您的答案
        • 投票实际上是匿名的。由于语法不佳,发出了反对票。如果您接受了修改提案,会投票赞成
        【解决方案11】:

        简单易懂

        int i = 1;
        i.ToString("0###")
        

        【讨论】:

        • 不知道你为什么不赞成它的工作并回答了操作问题
        【解决方案12】:

        .NET 在String 类中有一个简单的函数可以做到这一点。 只需使用:

        .ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length
        
        int i = 1; 
        i.toString().PadLeft(4,'0')  // will return "0001"  
        

        【讨论】:

        • 如果您有固定长度的字符串且数字会发生变化,则此方法有效。谢谢你! :)
        • int i = 1002;字符串 str = i.ToString().PadLeft(4, '0'); // 返回 "1002" :)
        【解决方案13】:
        public static string ToLeadZeros(this int strNum, int num)
        {
            var str = strNum.ToString();
            return str.PadLeft(str.Length + num, '0');
        }
        
        // var i = 1;
        // string num = i.ToLeadZeros(5);
        

        【讨论】:

          【解决方案14】:

          大多数给出的答案都很慢或非常慢,或者不适用于负数。

          试试这个:

          }
              //
              //
              ///<summary>Format a value with a fixed number of digits.</summary>
              public static string Pad( this long v, int digits ) {
                  int negative = 0;
                  if ( v < 0 ) {
                      negative = 1;
                      v = Math.Abs( v );
                  }
                  var source = v.ToString();
                  var length = source.Length;
                  int max = length;
                  if ( max < digits ) {
                      max = digits;
                  }
                  max += negative;
                  var ca = new char[ max ];
                  for ( int i = 0; i < max; i++ ) {
                      ca[ i ] = '0';
                  }
                  while ( length > 0 ) {
                      ca[ --max ] = source[ --length ];
                  }
                  if ( 0 != negative ) ca[ 0 ] = '-';
                  return new string( ca );
              }
          

          【讨论】:

            猜你喜欢
            • 2010-09-23
            • 2011-07-01
            • 2012-02-17
            • 2011-02-06
            • 1970-01-01
            • 2023-02-15
            • 2014-03-18
            • 1970-01-01
            • 2020-05-31
            相关资源
            最近更新 更多