nilai int di bawah 10 dikonversi ke string dua digit angka

119
string strI;   

for (int i = 1; i < 100; i++)
    strI = i.ToString();

di sini, jika i = 1kemudian ToStringhasil"1"

Tapi saya ingin mendapatkan "01"atau"001"

Kelihatannya cukup mudah, tapi hanya ada artikel tentang

datetime.ToString("yyyy-MM-dd")`
Sungguk Lim
sumber
Cara terbaik adalah memposting kode yang mengkompilasi dan berjalan, tostirngitu tidak benar. Juga, untuk programmer, 0xmenyarankan Anda mengacu pada basis heksadesimal. Anda mencari "nol di depan".
Kobi
@Kobi maaf, bahasa ibu saya bukan bahasa Inggris dan bahasa Inggris saya sebenarnya buruk. dan saya pergi ke sekolah bahasa Inggris setiap hari untuk meningkatkan bahasa Inggris saya. Bisakah Anda mengerti saya. dan saya telah mengedittostirng
Sungguk Lim
Tidak apa-apa. Hanya sebuah petunjuk. Bagaimanapun, int.ToString dapat mengambil format, seperti DateTime.ToString.
Kobi

Jawaban:

12

Jawaban yang diterima bagus dan cepat:

i.ToString("00")

atau

i.ToString("000")

Jika Anda membutuhkan lebih banyak kerumitan, String.Format patut dicoba:

var str1 = "";
var str2 = "";
for (int i = 1; i < 100; i++)
{
    str1 = String.Format("{0:00}", i);
    str2 = String.Format("{0:000}", i);
}

Untuk i = 10kasus:

str1: "10"
str2: "010"

Saya menggunakan ini, misalnya, untuk menghapus teks pada Kontrol Label tertentu pada formulir saya dengan nama:

private void EmptyLabelArray()
{
    var fmt = "Label_Row{0:00}_Col{0:00}";
    for (var rowIndex = 0; rowIndex < 100; rowIndex++)
    {
        for (var colIndex = 0; colIndex < 100; colIndex++)
        {
            var lblName = String.Format(fmt, rowIndex, colIndex);
            foreach (var ctrl in this.Controls)
            {
                var lbl = ctrl as Label;
                if ((lbl != null) && (lbl.Name == lblName))
                {
                    lbl.Text = null;
                }
            }
        }
    }
}
jp2code
sumber
6

Saya tidak percaya tidak ada yang menyarankan ini:

int i = 9;
i.ToString("D2"); // Will give you the string "09"

atau

i.ToString("D8"); // Will give you the string "00000009"

Jika Anda ingin heksadesimal:

byte b = 255;
b.ToString("X2"); // Will give you the string "FF"

Anda bahkan dapat menggunakan hanya "C" untuk ditampilkan sebagai mata uang jika Anda menempatkan simbol mata uang. Lihat di sini: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_

nivs1978
sumber
5

Posting blog ini adalah contekan kecil yang bagus untuk tetap berguna saat mencoba memformat string ke berbagai format.

tautan ke trojan dihapus

Edit

Tautan dihapus karena Google memperingatkan sementara bahwa situs (atau situs terkait) mungkin telah menyebarkan perangkat lunak berbahaya. Sekarang tidak ada lagi dalam daftar dan tidak lagi dilaporkan sebagai bermasalah. Google "SteveX String Formatting" Anda akan menemukan hasil pencarian dan Anda dapat mengunjunginya sesuai kebijaksanaan Anda.

Dave White
sumber
1
Situs itu (sekarang) memicu peringatan trojan.
Henk Holterman
0

Anda juga bisa melakukannya dengan cara ini

private static string GetPaddingSequence(int padding)
{
      StringBuilder SB = new StringBuilder();
      for (int i = 0; i < padding; i++)
      {
           SB.Append("0");
      }

      return SB.ToString();
  }

public static string FormatNumber(int number, int padding)
{
    return number.ToString(GetPaddingSequence(padding));
}

Terakhir, panggil fungsi FormatNumber

string x = FormatNumber(1,2);

Output akan menjadi 01 yang didasarkan pada parameter padding Anda. Meningkatkannya akan menambah jumlah 0s

VIjayendra
sumber