Topik ini membahas tipe string dan tiga cara kerja dengannya yang paling sering dipakai, yaitu metode siap pakai untuk memanipulasi teks, interpolasi string (string interpolation) untuk menyisipkan nilai ke dalam teks, dan string verbatim yang membaca teks apa adanya. Setelah topik ini diselesaikan, pembentukan teks yang memuat nilai variabel dapat ditulis dengan ringkas dan pemrosesan teks dasar dapat dilakukan tanpa library tambahan.
Metode string yang sering dipakai#
Tipe string menyimpan rangkaian karakter dan disertai banyak metode bawaan. Metode Trim() membuang spasi di kedua ujung teks, sedangkan ToUpper() mengubah seluruh hurufnya menjadi kapital. Properti Length melaporkan banyaknya karakter, dan sifatnya sebagai properti terlihat dari penulisan tanpa tanda kurung.
string kalimat = " Bahasa C# Modern ";
Console.WriteLine(kalimat.Trim());
Console.WriteLine(kalimat.Trim().ToUpper());
Console.WriteLine(kalimat.Length);Bahasa C# Modern
BAHASA C# MODERN
20Nilai Length adalah 20 karena dua spasi di setiap ujung ikut terhitung. Metode Contains menguji kemunculan teks di dalam string, Replace mengganti bagian teks dengan teks lain, sedangkan Substring mengambil potongan teks mulai dari indeks tertentu. Indeks string dimulai dari nol, sehingga indeks 8 pada contoh berikut tepat setelah kata pertama beserta spasi pengikutnya.
string sapaan = "Selamat datang";
Console.WriteLine(sapaan.Contains("datang"));
Console.WriteLine(sapaan.Replace("Selamat", "Salam"));
Console.WriteLine(sapaan.Substring(8));True
Salam datang
datangInterpolasi dengan tanda $#
Penyambungan teks dengan operator + bekerja, tetapi cepat berantakan ketika nilai yang disisipkan bertambah. Interpolasi menyelesaikan hal itu dengan menandai string menggunakan $, kemudian menulis ekspresi apa pun di dalam tanda kurung kurawal. Nilai ekspresi dikonversi menjadi teks pada posisinya saat program berjalan.
string judulBuku = "Laut Bercerita";
int jumlahHalaman = 372;
Console.WriteLine("Buku " + judulBuku + " berisi " + jumlahHalaman + " halaman.");
Console.WriteLine($"Buku {judulBuku} berisi {jumlahHalaman} halaman.");Buku Laut Bercerita berisi 372 halaman.
Buku Laut Bercerita berisi 372 halaman.Kedua baris menghasilkan teks yang sama, tetapi versi interpolasi mengikuti urutan baca teksnya sehingga lebih mudah disunting. Di dalam kurung kurawal, ekspresi dapat diikuti titik dua dan penentu format (format specifier). Contoh {suhu:F1} memformat angka dengan satu angka di belakang koma, sedangkan penentu perataan seperti {nama,10} menambahkan spasi agar lebarnya sepuluh karakter.
double suhu = 23.456;
string nama = "Citra";
Console.WriteLine($"Suhu: {suhu:F1} derajat Celsius");
Console.WriteLine($"|{nama,10}|");
Console.WriteLine($"|{nama,-10}|");Suhu: 23.5 derajat Celsius
| Citra|
|Citra |Lebar positif meratakan ke kanan, sedangkan lebar negatif meratakan ke kiri. Format angka mengikuti pengaturan budaya (culture) lingkungan tempat program dijalankan, sehingga pemisah desimal dapat berupa titik atau koma di komputer yang berbeda. Pada lingkungan tanpa pengaturan budaya tertentu, seperti sandbox yang dipakai di jalur ini, pemisahnya berupa titik.
Isi kurung kurawal tidak terbatas pada nama variabel, melainkan ekspresi apa pun yang menghasilkan nilai. Penghitungan sederhana dan perbandingan boleh ditulis langsung di dalamnya, sehingga variabel penengah yang hanya dipakai sekali tidak perlu dibuat.
int halamanSekarang = 12;
int totalHalaman = 372;
Console.WriteLine($"Sisa halaman: {totalHalaman - halamanSekarang}");
Console.WriteLine($"Selesai dibaca: {halamanSekarang >= totalHalaman}");Sisa halaman: 360
Selesai dibaca: FalseEkspresi yang terlalu panjang justru menyulitkan pembacaan, sehingga batas kewajarannya adalah satu operasi pendek. Perhitungan yang bertingkat lebih baik disimpan pada variabel dengan nama yang menjelaskan maksudnya, kemudian variabel itulah yang diinterpolasi.
String verbatim#
Awalan @ mengubah string menjadi verbatim string, yaitu string yang dibaca apa adanya. Tanda garis miring terbalik tidak lagi diperlakukan sebagai karakter khusus, sehingga cocok untuk jalur berkas pada Windows. String verbatim juga boleh meliputi lebih dari satu baris tanpa karakter pindah baris eksplisit.
string jalurBerkas = @"C:\Users\Dewi\Documents\catatan.txt";
Console.WriteLine(jalurBerkas);
string puisi = @"Belajar itu proses,
baris kedua mengikuti baris pertama.";
Console.WriteLine(puisi);C:\Users\Dewi\Documents\catatan.txt
Belajar itu proses,
baris kedua mengikuti baris pertama.Bandingkan dengan string biasa yang memerlukan \\ untuk setiap garis miring terbalik. Spasi dan pindah baris pada sumber kode ikut tersimpan apa adanya, sehingga indentasi di editor ikut tercetak. Tanda kutip ganda di dalam string verbatim ditulis ganda, misalnya "ia berkata ""siap""", karena kutip tunggal tidak lagi menjadi penanda akhir string.
Awalan verbatim dapat digabungkan dengan interpolasi. Bentuknya $@"..." atau @$"..." dan keduanya sah dengan perilaku yang sama, sehingga jalur berkas yang panjang dapat meliputi beberapa baris tanpa karakter pindah baris buatan, sementara bagian di dalam kurung kurawal tetap dievaluasi sebagai ekspresi. Perbedaan keduanya hanya soal keterbacaan, yaitu tanda apa yang tertulis lebih dahulu di depan tanda kutip. Kombinasi $@ lebih banyak dijumpai pada kode lama karena terasa sebagai interpolasi yang diberi awalan verbatim, sedangkan @$ menonjolkan sifat verbatimnya lebih dahulu. Dalam satu proyek, memilih salah satu bentuk secara konsisten lebih baik daripada mencampur keduanya.
Kesalahan umum#
- Lupa menuliskan tanda
$. Tanpa tanda itu,{judulBuku}tercetak sebagai teks mentah beserta kurung kurawalnya. Tambahkan$di depan tanda kutip agar ekspresi di dalamnya dievaluasi. - Mengira metode mengubah string aslinya. Memanggil
kalimat.Trim();tanpa menyimpan atau mencetak hasilnya tidak memengaruhi apa pun karena string bersifat immutable. Gunakan hasil kembaliannya, misalnyakalimat = kalimat.Trim();. - Mengira
Trim()menghapus spasi di tengah teks. Metode ini hanya bekerja pada kedua ujung string. Spasi antar kata di tengah teks tetap utuh. - Memanggil
Substringdengan indeks di luar panjang string. Pemanggilan tersebut memunculkan exceptionArgumentOutOfRangeException. PeriksaLengthterlebih dahulu bila panjang potongannya tidak pasti.
Ringkasan#
- Metode
Trim,ToUpper,Contains,Replace, danSubstringserta propertiLengthmencakup pemrosesan teks dasar, dan semuanya mengembalikan string baru karena string bersifat immutable. - Interpolasi dengan tanda
$menyisipkan nilai ekspresi ke dalam teks, lengkap dengan penentu format dan perataan di dalam kurung kurawal. - String verbatim yang diawali
@membaca garis miring terbalik dan pindah baris secara apa adanya, sehingga cocok untuk jalur berkas dan teks berbaris. - Format angka mengikuti budaya lingkungan yang menjalankan program, sehingga pemisah desimalnya dapat berbeda antar komputer.
Referensi#
- $ - string interpolation — Microsoft Learn — Rujukan resmi sintaks interpolasi, termasuk penentu format dan perataan.
- String Class — Microsoft Learn
— Daftar lengkap metode dan properti tipe
stringpada .NET.