Menggunakan interpolasi string untuk membuat string yang diformat
Tutorial ini mengajarkan Anda cara menggunakan interpolasi string untuk memasukkan nilai ke dalam string tunggal. Anda juga mempelajari cara mengontrol pemformatan teks string hasil. Dengan menggunakan browser untuk menulis dan menjalankan C#, Anda langsung dapat melihat hasilnya.
Membuat string terinterpolasi
Eksekusi kode berikut dalam jendela interaktif. Pilih tombol Masuk ke mode fokus. Kemudian, ketik blok kode berikut di jendela interaktif (ganti <name>
dengan nama Anda) dan pilih Jalankan:
var name = "<name>";
Console.WriteLine($"Hello, {name}. It's a pleasure to meet you!");
Saat Anda mengeksekusi kode, Output menampilkan string yang berisi nama Anda di halaman selamat datang. Argumen string panggilan metode WriteLine merupakan ekspresi string terinterpolasi. String ini adalah templat yang memungkinkan Anda untuk membuat string tunggal (disebut string hasil) dari string yang berisi kode yang disematkan. Ekspresi string terinterpolasi sangat berguna untuk menyisipkan nilai ke dalam string atau menggabungkan (menyatukan) beberapa string.
Contoh di atas berikut berisi dua elemen yang harus dimiliki setiap ekspresi string terinterpolasi:
Literal string yang diawali dengan karakter
$
sebelum karakter tanda kutip pembukanya. Tidak boleh ada spasi di antara simbol$
dan karakter tanda kutip. (Jika ingin melihat apa yang terjadi jika Anda menyertakannya, sisipkan spasi setelah karakter$
di jendela interaktif dan jalankan kode yang diperbarui. Pengompilasi C# mengeluarkan peringatan, "Karakter tidak terduga '$'".)Satu atau beberapa ekspresi terinterpolasi. Ekspresi terinterpolasi diindikasikan dengan tanda kurung buka dan tutup (
{
dan}
). Anda dapat meletakkan ekspresi C# apa pun yang mengembalikan nilai (termasuknull
) di dalam kurung kurawal.
Mari kita coba beberapa contoh interpolasi string dengan beberapa jenis data lainnya.
Memasukkan jenis data yang berbeda
Pada langkah sebelumnya, Anda menggunakan interpolasi string untuk menyisipkan satu string di dalam string lainnya. Namun, setiap ekspresi interpolasi yang merupakan bagian dari ekspresi string terinterpolasi dapat berupa jenis data apa pun. Mari kita sertakan nilai-nilai dari berbagai ekspresi jenis data dalam string terinterpolasi.
Dalam contoh berikut, pertama-tama kita mendefinisikan tuple yang memiliki Name
, Price
, dan perPackage
anggota. Jalankan kode berikut dalam jendela interaktif:
var item = (Name: "eggplant", Price: 1.99m, perPackage: 3);
var date = DateTime.Now;
Console.WriteLine($"On {date}, the price of {item.Name} was {item.Price} per {item.perPackage} items.");
Perhatikan bahwa ekspresi interpolasi item.Price
dalam string terinterpolasi diselesaikan ke teks "1.99" dalam string hasil. Itu karena, ketika jenis hasil ekspresi bukan string, hasilnya diselesaikan ke string dengan cara berikut:
Jika ekspresi interpolasi mengevaluasi ke
null
, string kosong ("", atau String.Empty) digunakan.Jika ekspresi interpolasi tidak mengevaluasi ke
null
, biasanya metodeToString
ekspresi hasil dipanggil.
Pada output dari contoh ini, tanggalnya terlalu tepat (harga terong (eggplant) tidak berubah-ubah setiap detik), dan nilai harga tidak mengindikasikan satuan mata uang. Di langkah berikutnya, Anda akan mempelajari cara memperbaiki masalah tersebut dengan mengontrol format representasi string dari hasil ekspresi.
Mengontrol pemformatan ekspresi interpolasi
Dalam langkah sebelumnya, dua string yang berformat buruk disisipkan ke dalam string hasil. Yang pertama adalah nilai tanggal dan waktu yang hanya sesuai untuk tanggal tersebut. Yang kedua adalah harga yang tidak mengindikasikan satuan mata uangnya. Kedua masalah tersebut mudah diatasi. Interpolasi string memungkinkan Anda menentukan string format yang mengontrol pemformatan jenis tertentu. Ubah panggilan menjadi Console.WriteLine
dari contoh sebelumnya untuk menyertakan string format untuk ekspresi tanggal dan harga seperti yang ditunjukkan pada baris berikut:
Console.WriteLine($"On {date:d}, the price of {item.Name} was {item.Price:C2} per {item.perPackage} items");
Anda menentukan string format dengan memberi titik dua (“:”) dan string format di belakang ekspresi interpolasi. "d" adalah string format tanggal dan waktu standar yang mewakili format tanggal pendek. "C2" adalah string format numerik standar yang mewakili angka sebagai nilai mata uang dengan dua digit setelah poin desimal.
Banyak jenis dalam pustaka .NET yang mendukung kumpulan string format yang telah ditentukan sebelumnya. Jenis ini termasuk semua jenis numerik dan jenis tanggal dan waktu. Untuk daftar lengkap dari jenis yang mendukung string format, lihat String Format dan Jenis Pustaka Kelas .NET dalam artikel Jenis Pemformatan di .NET.
Coba ubah string format pada contoh untuk melihat efeknya terhadap pemformatan tanggal dan waktu serta nilai numerik. Ubah "d" dalam {date:d}
menjadi "t" (untuk menampilkan format waktu singkat), "y" (untuk menampilkan tahun dan bulan), dan "yyyy" (untuk menampilkan tahun sebagai angka empat digit). Ubah "C2" dalam {price:C2}
menjadi "e" (untuk notasi eksponensial) dan "F3" (untuk nilai numerik dengan tiga digit setelah poin desimal).
Selain mengontrol pemformatan, Anda juga dapat mengontrol lebar bidang dan perataan string yang diformat yang disertakan dalam string hasil. Pada langkah selanjutnya, Anda akan mempelajari cara melakukan ini.
Mengontrol lebar bidang dan perataan ekspresi interpolasi
Biasanya, ketika hasil ekspresi string terinterpolasi diformat ke string, string tersebut disertakan dalam string hasil tanpa spasi di depan atau di belakang. Terutama ketika Anda bekerja dengan satu set data, kemampuan mengontrol lebar bidang dan perataan teks membantu menghasilkan output yang lebih mudah dibaca. Untuk melihatnya, jalankan kode berikut:
var inventory = new Dictionary<string, int>()
{
["hammer, ball pein"] = 18,
["hammer, cross pein"] = 5,
["screwdriver, Phillips #2"] = 14
};
Console.WriteLine($"Inventory on {DateTime.Now:d}");
Console.WriteLine(" ");
Console.WriteLine($"|{"Item",-25}|{"Quantity",10}|");
foreach (var item in inventory)
Console.WriteLine($"|{item.Key,-25}|{item.Value,10}|");
Nama item rata kiri, sedangkan kuantitasnya rata kanan. Anda menentukan perataan dengan menambahkan koma (",") setelah ekspresi interpolasi dan menetapkan lebar bidang minimum. Jika nilai yang ditentukan adalah bilangan positif, bidangnya akan dirata kanan. Jika merupakan bilangan negatif, bidangnya akan dirata kiri.
Coba hapus tanda negatif dari kode {"Item",-25}
dan {item.Key,-25}
lalu jalankan contoh lagi. Kali ini, nama item akan dirata kanan.
Anda dapat menggabungkan penentu perataan dan string format untuk ekspresi interpolasi tunggal. Untuk melakukan itu, tentukan perataan terlebih dahulu, diikuti dengan titik dua dan string format. Coba kode berikut yang menampilkan tiga string yang diformat dengan lebar bidang yang telah ditentukan:
Console.WriteLine($"[{DateTime.Now,-20:d}] Hour [{DateTime.Now,-10:HH}] [{1063.342,15:N2}] feet");
Selamat!
Anda telah menyelesaikan tutorial interaktif interpolasi string. Anda dapat mengunjungi situs .NET untuk mengunduh SDK .NET Core, membuat proyek di komputer Anda, dan melanjutkan pengkodean.
Untuk informasi selengkapnya, lihat Interpolasi string.
Memiliki masalah dengan bagian ini? Jika iya, berikan umpan balik kepada kami agar kami dapat meningkatkan bagian ini.