添加0如果数字小于10

时间:2012-09-18 15:43:57

标签: c# .net formatting

  

可能重复:
  C# int ToString format on 2 char int?

很抱歉这个简单,但是这个让我望而却步。几乎我有36个记录的列表,如果id小于10,我需要它返回01,02,03 ... 09,而不是1,2,3 ... 9.

这是我到目前为止的代码,我认为这会起作用。这是C#.NET:

for (int i = 1; i <= 36; i++)
{
    if (i.ToString().Length == 1)
    {
        i.ToString().PadLeft(2,'0');
    }

    Response.Write("Test: " + i);
}

任何帮助将不胜感激,提前谢谢!

6 个答案:

答案 0 :(得分:14)

您的问题是i仍然是一个整数,需要将其分配给字符串

  for (int i = 1; i <= 36; i++)
    {
        var iString = i.ToString();

        if(iString.Length == 1)
        {
            iString = iString.PadLeft(2,'0'); //RIGHT HERE!!!
        }
        Response.Write("Test: " + iString);
    }

但是,这些代码中的大部分都是超级的,不需要if语句。 Pad只会使用零到达给定的长度(2)。如果它已经是2个或更多字符长,它将不会填充任何内容。你只需要这个

    for (int i = 1; i <= 36; i++)
    {
        var iString = i.ToString().PadLeft(2,'0');
        Response.Write("Test: " + iString);
    }

就此而言,不再需要变量。

    for (int i = 1; i <= 36; i++)
    {
        Response.Write("Test: " + i.ToString().PadLeft(2,'0'));
    }

如果你一直用零填充,而不是其他角色,你可以这样做

    for (int i = 1; i <= 36; i++)
    {
        Response.Write("Test: " + i.ToString("00"));
    }

你应养成使用string.Format

的习惯
    for (int i = 1; i <= 36; i++)
    {
        Response.Write(string.Format("Test: {0}", i.ToString("00")));
    }

答案 1 :(得分:8)

您不需要IF,请使用ToString

int i = 5;

i.ToString("00"); //returns 05

答案 2 :(得分:4)

您可以尝试使用

var list = new List<string>();
for (int i = 1; i <= 36; i++)
{
    var result = string.Empty; 
    if(i < 10)
    {
         result = string.Format("0{0}", i);
    }
    else
    {
        result = i.ToString();
    }
    list.Add(result);
}

Nota:在调用Response.Redirect

之前Concat你的值

答案 3 :(得分:2)

你只是将我转换为字符串并丢弃结果。 在Response.Write("Test: " + i);中,您正在打印i而不是将其转换为字符串。 尝试:

for (int i = 1; i <= 36; i++)
{
    if (i.ToString().Length == 1)
    {
           Response.Write(i.ToString().PadLeft(2,'0'));
    }
}

答案 4 :(得分:2)

您没有使用以下行执行任何操作:

i.ToString().PadLeft(2,'0');

i仍然只是一个整数,当你以后使用它时,它的字符串表示不会在它前面有0。 您需要保存值的字符串以便稍后打印。

答案 5 :(得分:2)

您无需查看i.ToString().Length == 1

for (int i = 1; i <= 36; i++)    
    Response.Write("Test: " + i.ToString().PadLeft(2,'0')); 

在MSDN中查看PadLeft以获得澄清。共同签名:

public string PadLeft(int totalWidth, char paddingChar)

您也可以使用String.Format

for (int i = 1; i <= 36; i++)    
    Response.Write("Test: " + i.ToString("00")); 

另一种方式 - 使用LINQ

foreach (var number in Enumerable.Range(1, 36).Select(i => i.ToString("00")))
  Response.Write("Test: " + number);