5

可能重复:
2 char int 上的 C# int ToString 格式?

对不起,这很简单,但我正在躲避这个。几乎我有一个包含 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);
}

任何帮助将不胜感激,在此先感谢!

4

6 回答 6

16

你不需要 IF,使用 ToString

int i = 5;

i.ToString("00"); //returns 05
于 2012-09-18T15:48:38.287 回答
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")));
    }

string.Format为了进一步简化:

    for (int i = 1; i <= 36; i++)
    {
        Response.Write(string.Format("Test: {0:00}", i));
    }
于 2012-09-18T15:47:34.490 回答
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);
}

注意:在调用 Response.Redirect 之前连接你的值

于 2012-09-18T15:47:52.573 回答
3

您没有对以下行做任何事情:

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

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

于 2012-09-18T15:48:01.323 回答
3

您无需检查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);
于 2012-09-18T15:48:47.187 回答
2

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

for (int i = 1; i <= 36; i++)
{
    if (i.ToString().Length == 1)
    {
           Response.Write(i.ToString().PadLeft(2,'0'));
    }
}
于 2012-09-18T15:47:51.917 回答