Coba bayangin nama-nama input form yang user ketik berbentuk macem-macem: "BUDI", " budi ", "Budi Santoso". Buat nyimpen di database, kamu mau yang rapi: tanpa spasi awal-akhir, kapital cuma huruf pertama. Gimana caranya? String methods. JavaScript kasih puluhan method bawaan buat manipulasi teks — trim(), toUpperCase(), split(), replace(), dll. Sekali kuasain, kerjaan yang dulu ribet jadi 1 baris.
🤔 Aturan diam-diam. Method string SELALU bikin string baru, gak pernah ngubah string asli (immutable).
nama.toUpperCase()saja gak ngaruh kenama— kamu harus assign kembali:nama = nama.toUpperCase(). Bug klasik pemula JS.
Mengubah huruf:
"halo".toUpperCase() // "HALO"
"HALO".toLowerCase() // "halo"
Mencari dan memeriksa:
"Belajar JS".includes("JS") // true
"Belajar JS".startsWith("Bel") // true
"Belajar JS".indexOf("JS") // 8
Memotong dan menggabung:
" halo ".trim() // "halo"
"a-b-c".split("-") // ["a", "b", "c"]
"Halo Dunia".slice(0, 4) // "Halo"
Mengganti:
"kucing kucing".replace("kucing", "anjing") // "anjing kucing"
"kucing kucing".replaceAll("kucing", "anjing") // "anjing anjing"
Membalik string (tidak ada method bawaan, tapi bisa dikombinasikan):
"halo".split("").reverse().join("") // "olah"
🎭 Analogi sehari-hari
String itu seperti lembar fotokopi: tukang ketik bisa coret, ganti huruf, atau gunting di lembar fotokopi — tapi lembar asli tidak pernah berubah.
const asli = "halo";
asli.toUpperCase(); // bikin fotokopi "HALO"
console.log(asli); // "halo" — asli tidak berubah!
⚠️ Jebakan yang sering ditemui
1. replace() tanpa flag g cuma ganti yang pertama.
"a-b-a".replace("a", "X"); // "X-b-a" (hanya yang pertama!)
"a-b-a".replaceAll("a", "X"); // "X-b-X"
"a-b-a".replace(/a/g, "X"); // "X-b-X" (regex dengan flag g)
2. indexOf() return -1 kalau tidak ketemu — bukan false.
"halo".indexOf("z"); // -1, bukan false
if ("halo".indexOf("z")) { /* jalan! karena -1 truthy */ }
if ("halo".indexOf("z") !== -1) { /* cara benar */ }
🧪 Tebakan cepat — chaining string methods. Tanpa run, tebak output:
" Hello World ".trim().toLowerCase(); // ??? "hello-world".split("-").join(" "); // ??? "abc".replace("b", "X").toUpperCase(); // ??? "Halo".repeat(3).slice(0, 8); // ???Jawaban:
"hello world","hello world","AXC","HaloHalo". Tiap method return string baru (immutable), bisa di-chain langsung. Eksekusi KIRI ke KANAN, hasil method jadi input method berikutnya. Jangan lupa: method gak ngubah string asli — selalu assign ke variabel kalau perlu disimpan.
TL;DR: String methods = manipulasi teks built-in. String IMMUTABLE — tiap method return string baru, gak ubah asli. Wajib hafal: trim() (hapus spasi), toUpperCase()/toLowerCase(), split()/join(), slice(start, end), replace() (cuma pertama), replaceAll() (semua), includes()/indexOf() (cek substring). indexOf() return -1 (truthy!) kalau tidak ketemu — pakai !== -1. Chainable left → right. Pakai replaceAll modern (atau replace(/x/g, ...) dengan regex).