String Methods — JavaScript

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

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 ke nama — 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).

Yang akan kamu pelajari