5

重複の可能性:
2 char int の C# int ToString 形式?

シンプルで申し訳ありませんが、これは私を避けています。ほとんどの場合、36 レコードのリストがあり、id が 10 未満の場合は、1、2、3... 9 ではなく、01、02、03... 09 を返す必要があります。

これが私がこれまでに持っていたコードで、これでうまくいくと思っていました。これは 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ステートメントは必要ありません。パッドは、指定された長さ (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 に答える