Tutorial: Menggunakan interpolasi string untuk membuat laporan di C#

Dalam tutorial ini, Anda membuat aplikasi berbasis file kecil yang mencetak ringkasan pesanan yang diformat. Di sepanjang jalan, Anda menerapkan interpolasi string untuk menyisipkan nilai ke dalam teks, memformat angka dan mata uang, menyusun kolom, dan menghasilkan output khusus budaya.

Tutorial ini mengasumsikan bahwa Anda terbiasa dengan konsep C# dasar. Untuk referensi fitur demi fitur sintaks interpolasi, lihat Interpolasi string.

Prasyarat

  • SDK .NET 10 atau versi yang lebih baru. Aplikasi berbasis file memerlukan .NET 10 atau yang lebih baru.
  • Editor kode, seperti Visual Studio Code.

Membuat aplikasi

Aplikasi berbasis file adalah satu .cs file yang Anda jalankan tanpa file proyek. Buat folder untuk aplikasi dan pindahkan ke dalamnya:

mkdir StringInterpolation
cd StringInterpolation

Buat file kosong bernama report.cs di folder tersebut dan buka di editor Anda. Anda menambahkan kode ke dalamnya di bagian berikut, dan Anda menjalankan aplikasi dengan dotnet run report.cs.

Sisipkan nilai ke dalam teks

Awali string literal dengan $ untuk menjadikannya string terinterpolasi. Di dalam string, letakkan ekspresi C# apa pun dalam kurung kurawal ({ dan }); C# mengevaluasi ekspresi, mengonversi hasilnya menjadi string, dan menyisipkannya.

Tambahkan kode berikut ke report.cs, lalu jalankan aplikasi dengan dotnet run report.cs:

string name = "Maria";
int itemCount = 3;

// Prefix a string literal with $ to interpolate expressions inside braces.
Console.WriteLine($"Hello, {name}! You have {itemCount} items in your cart.");
// => Hello, Maria! You have 3 items in your cart.

Hasilnya menggabungkan teks harfiah dengan nilai name dan itemCount.

Memformat angka dan mata uang

Ringkasan pesanan menunjukkan uang dan tarif, sehingga angka mentah seperti 23.5 atau 0.08 terlihat belum selesai dan sulit dibaca. Sajikan setiap nilai seperti yang diharapkan pelanggan: harga dengan simbol mata uang dan tarif pajak sebagai persentase. Formatlah sebagai bagian dari interpolasi.

Untuk memformat nilai, ikuti ekspresi tersebut dengan titik dua (:) dan string pemformatan. String format standar C dan P0 menghasilkan format mata uang dan persentase bilangan bulat. Tambahkan kode berikut ke akhir file:

decimal subtotal = 23.5m;
decimal taxRate = 0.08m;

// Follow an expression with :format to apply a standard or custom format string.
Console.WriteLine($"Subtotal: {subtotal:C}");
Console.WriteLine($"Tax rate: {taxRate:P0}");
Console.WriteLine($"Total:    {subtotal * (1 + taxRate):C}");
// => Subtotal: $23.50
// => Tax rate: 8%
// => Total:    $25.38

String format menerapkan konvensi budaya saat ini, sehingga simbol mata uang dan pemisah cocok dengan pengaturan komputer.

Meratakan nilai ke dalam kolom

Saat Anda mencetak beberapa baris data, nilai dengan panjang yang berbeda membuat kolom menjadi kaku dan sulit dipindai. Untuk menyejajarkan setiap nama dan angka di bawah tajuk yang sama, beri setiap field lebar tetap agar kolom tetap rapi, berapa pun panjang setiap nilainya.

Untuk mengatur lebar bidang minimum, ikuti ekspresi dengan koma (,) dan lebar. Lebar positif membuat nilai tersebut rata kanan; lebar negatif membuatnya rata kiri. Gabungkan lebar dan string format sebagai {expression,width:format}. Tambahkan kode berikut untuk mencetak ringkasan tabular:

(string Name, int Quantity, decimal Price)[] orders =
[
    ("Espresso", 2, 3.50m),
    ("Cappuccino", 1, 4.25m),
    ("Tea", 4, 2.00m),
];

// Follow an expression with ,width to set a minimum field width.
// A positive width right-aligns; a negative width left-aligns.
foreach (var order in orders)
{
    Console.WriteLine($"{order.Name,-12}{order.Quantity,3}{order.Price * order.Quantity,10:C}");
}
// => Espresso      2     $7.00
// => Cappuccino    1     $4.25
// => Tea           4     $8.00

Kolom nama yang rata kiri dan kolom numerik yang rata kanan tersusun selaras sehingga membentuk tabel yang mudah dibaca.

Menghasilkan output khusus budaya

String terinterpolasi menggunakan budaya saat ini secara default. Ketika Anda memerlukan budaya tertentu, seperti format tetap untuk log atau lokal untuk tanda terima, teruskan budaya ke String.Create(IFormatProvider, DefaultInterpolatedStringHandler). Tambahkan kode berikut:

decimal total = 1234.56m;

// An interpolated string uses the current culture by default.
// Use string.Create with a culture to control the formatting explicitly.
string germanReceipt = string.Create(
    new CultureInfo("de-DE"), $"Gesamt: {total:C}");
string invariantLog = string.Create(
    CultureInfo.InvariantCulture, $"total={total:F2}");

Console.WriteLine(germanReceipt);
Console.WriteLine(invariantLog);
// => Gesamt: 1.234,56 €
// => total=1234.56

Tanda terima Jerman menggunakan koma sebagai pemisah desimal dan simbol euro. Log invarian menggunakan tanda titik dan tidak menggunakan simbol apa pun, terlepas dari pengaturan lokal mesin.

Langkah berikutnya

Anda menggunakan interpolasi string untuk menyisipkan, memformat, meratakan, dan melokalisasi nilai. Untuk serangkaian fitur interpolasi lengkap, termasuk literal string mentah, kurung kurawal yang lolos, dan string terinterpolasi konstan, lihat artikel konsep:

Baca juga