Catatan pesanan, log transaksi, dan alamat situs adalah teks yang perlu diperiksa isinya sebelum diproses lebih lanjut. Program perlu menjawab pertanyaan seperti: di posisi berapa kata tertentu berada, dan bagaimana mengganti satu bagian teks tanpa menulis ulang semuanya. Kelas string menyediakan kelompok method khusus untuk pencarian dan penggantian.

Menemukan Posisi Substring #

Method IndexOf mengembalikan indeks kemunculan pertama, dan LastIndexOf mengembalikan kemunculan terakhir. Bila substring tidak ditemukan, keduanya mengembalikan -1:

csharp
string pesanan = "Es teh manis dan es teh tawar";

Console.WriteLine(pesanan.IndexOf("teh"));
Console.WriteLine(pesanan.LastIndexOf("teh"));
Console.WriteLine(pesanan.IndexOf("kopi"));

Output yang Dihasilkan:

text
3
20
-1

String pesanan memuat kata teh dua kali. IndexOf menemukan kemunculan pertama pada indeks 3, dan LastIndexOf menemukan kemunculan terakhir pada indeks 20. Kata kopi tidak ada dalam teks, sehingga hasilnya -1; pola inilah yang dipakai program untuk menguji keberadaan substring sebelum memproses.

Nilai kembalian IndexOf bertipe int, sehingga hasilnya bisa langsung diuji dengan pemeriksaan seperti if (posisi >= 0). Konvensi -1 sebagai penanda “tidak ditemukan” juga dipakai Array.IndexOf, sehingga pola pemeriksaannya konsisten di berbagai tipe data.

Pencarian Bersifat Case-Sensitive #

Pencarian IndexOf membedakan huruf besar dan huruf kecil:

csharp
Console.WriteLine(pesanan.IndexOf("Es"));
Console.WriteLine(pesanan.IndexOf("es"));

Output yang Dihasilkan:

text
0
17

Pemanggilan pertama mencari "Es" berhuruf kapital dan menemukannya di indeks 0, tepat di awal teks. Pemanggilan kedua mencari "es" berhuruf kecil; kemunculan tersebut baru ditemukan di dalam frasa "es teh tawar" pada indeks 17. Bila pencarian perlu mengabaikan perbedaan huruf, berikan argumen StringComparison.OrdinalIgnoreCase sebagai parameter kedua.

Replace, Remove, dan Insert #

Method Replace mengganti seluruh kemunculan substring, Remove membuang bagian teks, dan Insert menyisipkan teks pada indeks tertentu. Ketiganya mengembalikan string baru sesuai sifat immutable:

csharp
string diperbarui = pesanan.Replace("es teh", "jus alpukat");
Console.WriteLine(diperbarui);

string url = "https://toko.example.com/produk";
Console.WriteLine(url.Remove(0, 8));

string domain = "example.com";
Console.WriteLine(domain.Insert(0, "www."));

Output yang Dihasilkan:

text
Es teh manis dan jus alpukat tawar
toko.example.com/produk
www.example.com

Mari kita telaah pemanggilan pentingnya:

  1. pesanan.Replace("es teh", "jus alpukat"): Hanya kemunculan "es teh" berhuruf kecil yang diganti; frasa "Es teh manis" di awal tetap utuh karena huruf E kapital.
  2. url.Remove(0, 8): Argumen pertama adalah indeks mulai, argumen kedua adalah jumlah karakter yang dibuang; delapan karakter "https://" terbuang dari depan.
  3. domain.Insert(0, "www."): Method menyisipkan "www." pada indeks 0, dan string hasil memuat sambungan "www.example.com".