Sebelum string interpolation diperkenalkan, .NET sudah memiliki composite formatting: pemformatan dengan placeholder bernomor seperti {0} dan {1} di dalam string format. Gaya ini masih dipakai luas di pustaka .NET, pesan exception, dan framework logging, sehingga kita perlu membaca dan menulisnya dengan lancar.
Placeholder Bernomor #
Placeholder mengacu pada argumen setelah string format, dengan penomoran mulai dari nol:
string nama = "Budi";
int jumlah = 3;
double hargaSatuan = 15000;
Console.WriteLine("Pelanggan: {0}", nama);
Console.WriteLine("Total: {0} x {1} = {2:C}", jumlah, hargaSatuan, jumlah * hargaSatuan);Output yang Dihasilkan:
Pelanggan: Budi
Total: 3 x 15.000,00 = Rp45.000,00Contoh di atas berjalan dengan regional id-ID yang diatur pada bab sebelumnya. Mari kita telaah baris demi baris:
- Baris 5 (
"Pelanggan: {0}"): Placeholder{0}merujuk argumen pertama setelah string format, yaitu variabelnama. - Baris 6 (
"{0} x {1} = {2:C}"): Tiga placeholder menerima tiga argumen secara berurutan;jumlahmengisi{0},hargaSatuanmengisi{1}, dan hasil kali keduanya mengisi{2}. - Baris 6 (
{2:C}): Specifier setelah titik dua bekerja sama seperti pada bab sebelumnya, sehingga angka tampil sebagai mata uangRp45.000,00. - Baris 6 (expression
jumlah * hargaSatuan): Argumen boleh berupa expression; compiler mengevaluasinya lebih dulu, lalu hasilnya diformat oleh placeholder.
Perataan pada Placeholder #
Alignment juga didukung: tanda koma di dalam placeholder mengatur lebar minimum kolom, sama seperti pada interpolation:
Console.WriteLine("{0,-8}|{1,10}", "Barang", "Stok");
Console.WriteLine("{0,-8}|{1,10}", "Buku", 120);
Console.WriteLine("{0,-8}|{1,10}", "Pensil", 75);Output yang Dihasilkan:
Barang | Stok
Buku | 120
Pensil | 75Placeholder {0,-8} mengisi kolom delapan karakter dengan rata kiri, sedangkan {1,10} mengisi kolom sepuluh karakter dengan rata kanan. Tiga baris output kini membentuk tabel sederhana dengan kolom yang lurus.
Karakter Kurung Kurawal Literal #
Untuk menampilkan tanda {0} sebagai teks biasa, kurung kurawal ditulis ganda:
Console.WriteLine("Tanda {{0}} adalah placeholder {0}", "pertama");Output yang Dihasilkan:
Tanda {0} adalah placeholder pertamaDua gaya pemformatan ini saling melengkapi: string interpolation lebih nyaman untuk kode baru yang kita tulis, sedangkan composite formatting perlu dikuasai saat membaca pustaka dan kode lama yang menggunakannya.