代码之家  ›  专栏  ›  技术社区  ›  Nick LaMarca

强制整数至少为2位长[关闭]

  •  -12
  • Nick LaMarca  · 技术社区  · 14 年前

    有人能给我代码来做以下工作吗?

    如果整数为1-9,则显示字符串01、02、03等。如果10岁或以上,保持原样。

    string display = yourInt.ToString("00"); 
    

    不工作

    6 回复  |  直到 10 年前
        1
  •  1
  •   Garis M Suero    10 年前

    在任何语言(至少我知道的语言)和整数值类型中都不会有 2 以下任意值的位数长度 10 .

    以两位数的长度显示(如 02 , 05 , 12 )必须将数字转换为字符串,然后 padding 用它 0 .

    或者你会像这样评价它:

    String newValue = String.Format("{0:00}", yourInt);
    

    如您所见,在显示之前必须将其转换为字符串…

        2
  •  52
  •   Anthony Pegram    14 年前
    string display = yourInt.ToString("00");
    
        3
  •  13
  •   Jim Mischel    14 年前

    或者,在 String.Format 语法(用于 Console.WriteLine 例如)

    string s = String.Format("{0:00}", yourInt);
    
        4
  •  3
  •   CaffGeek    14 年前

    我不明白为什么 .ToString("00") 不起作用。此测试成功…

        [TestMethod]
        public void RightPadIntegersWithZero()
        {
            var values = new[] { -100, -20, -1, 0, 1, 5, 10, 100, 567 };
            var expecteds = new[] { "-100", "-20", "-01", "00", "01", "05", "10", "100", "567" };
    
            for (var i = 0; i < values.Length; i++)
            {
                var value = values[i];
                var expected = expecteds[i];
    
                var result = value.ToString("00");
                Assert.AreEqual(expected, result);
            }
        }
    

    你一定是在做与你的问题描述不同的事情

        5
  •  0
  •   Wonko the Sane    14 年前

    你的问题有点模棱两可:把它展示在哪里?

    无论如何,你可能想看看 String.Format .

        6
  •  0
  •   Pat Daburu    14 年前

    你想这样做吗?

    for (int i = -20; i < 100; i++)
    {
     string s = i.ToString();
     while (s.Length < 2) s = "0" + s;
     Console.WriteLine(s);
    }
    

    我意识到这是一个有点蛮力的方法,如本文所述。但如果它做到了这一点,您可以使用可重用的字符数组来优化它,而不是追加字符串。