Mengolah teks jarang berhenti pada menggabung dan membandingkan — kita perlu memotong, mencari, mengganti, memecah, lalu merakit kembali. Class String menyediakan puluhan method untuk semua tugas tersebut, dan sebagian kecil di antaranya menutup 90% kebutuhan sehari-hari. Chapter ini mempraktikkan method inti satu per satu: substring, indexOf, contains, toUpperCase, replace, strip, repeat, dan join, ditambah dua peralatan modern — pemecahan split dengan parameter limit dan stream chars(). Semua contoh dijalankan pada satu teks panjang agar hasil tiap method mudah dibandingkan.
Memotong, Mencari, dan Mengganti #
Indeks karakter berperan penting di sini, dengan konvensi sama seperti array: karakter pertama berindeks 0. Method substring(a) mengambil potongan dari indeks a hingga akhir; substring(a, b) mengambil mulai indeks a hingga sebelum indeks b. Method indexOf mencari posisi pertama kemunculan teks lain dan mengembalikan -1 bila tidak ditemukan — nilai sentinel yang wajib diperiksa sebelum dipakai sebagai indeks.
public class MethodString {
public static void main(String[] args) {
String teks = "Belajar Java itu menyenangkan";
System.out.println("length() : " + teks.length());
System.out.println("substring(8) : " + teks.substring(8));
System.out.println("substring(0, 7) : " + teks.substring(0, 7));
System.out.println("indexOf(\"Java\") : " + teks.indexOf("Java"));
System.out.println("indexOf(\"Kotlin\") : " + teks.indexOf("Kotlin"));
System.out.println("contains(\"itu\") : " + teks.contains("itu"));
System.out.println("toUpperCase() : " + teks.toUpperCase());
System.out.println("replace('a', 'o') : " + teks.replace('a', 'o'));
String jarang = " Java ";
System.out.println("strip() : [" + jarang.strip() + "]");
System.out.println("isBlank() : " + " ".isBlank());
System.out.println("trim vs strip : [" + "\u2000teks\u2000".trim() + "] [" + "\u2000teks\u2000".strip() + "]");
System.out.println("repeat(3) : " + "ab".repeat(3));
System.out.println("join : " + String.join(", ", "Budi", "Siti", "Dewi"));
}
}Output yang Dihasilkan:
length() : 29
substring(8) : Java itu menyenangkan
substring(0, 7) : Belajar
indexOf("Java") : 8
indexOf("Kotlin") : -1
contains("itu") : true
toUpperCase() : BELAJAR JAVA ITU MENYENANGKAN
replace('a', 'o') : Belojor Jovo itu menyenongkon
strip() : [Java]
isBlank() : true
trim vs strip : [ teks ] [teks]
repeat(3) : ababab
join : Budi, Siti, DewiMari kita telaah baris-baris kode di atas:
- Baris 5 (
teks.length()): menghitung karakter termasuk spasi — hasil29untuk teks contoh. - Baris 6-7 (
substring):substring(8)memotong mulai indeks8(hurufJ) hingga akhir, menghasilkan"Java itu menyenangkan";substring(0, 7)berhenti sebelum indeks7, menghasilkan tepat"Belajar". Batas atas tidak ikut diambil — konvensi yang sama dengancopyOfRangepada array. - Baris 8-10 (
indexOf,contains): kata"Java"ditemukan mulai indeks8; kata"Kotlin"tidak ada sehingga kembalian-1. Methodcontainshanya menjawab ada atau tidak (boolean), berguna saat posisinya tidak diperlukan. - Baris 11-12 (
toUpperCase,replace): keduanya mengembalikan String baru — objek asal tidak berubah, sesuai sifat immutable.replace('a', 'o')mengganti semua kemunculan, terbukti dari"Belojor Jovo"pada output. - Baris 14-16 (
strip,isBlank):stripmembuang spasi di kedua ujung. Baristrim vs stripmemakai karakter spasi Unicode\u2000:trimhanya mengenali spasi berkode ASCII hingga\u0020sehingga karakter tersebut bertahan, sedangkanstripmengenali seluruh spasi Unicode dan membuangnya — terlihat dari output[ teks ]versus[teks]. MethodisBlankmengembalikantrueuntuk teks kosong atau berisi spasi saja. - Baris 17-18 (
repeat,join):"ab".repeat(3)menduplikasi teks tiga kali menjadiababab;String.joinmerakit beberapa bagian dengan pemisah tertentu — keduanya hadir sejak Java 11.
Memecah dengan split dan Menelusuri dengan chars #
Method split memecah String menjadi array berdasarkan pemisah (regular expression sederhana seperti koma). Versi dua argumennya menerima parameter limit yang membatasi jumlah bagian — bagian terakhir menampung sisa teks apa adanya. Untuk penelusuran per karakter, method chars() menghasilkan stream int berkode Unicode yang bisa difilter dan dihitung tanpa perulangan eksplisit.
public class PecahTeks {
public static void main(String[] args) {
String csv = "Budi,85,Siti,92";
String[] kolom = csv.split(",");
for (String k : kolom) {
System.out.println("kolom: " + k);
}
String[] duaBagian = "a,b,c,d".split(",", 2);
System.out.println("split limit 2: " + String.join(" | ", duaBagian));
String nama = "Budi Santoso";
long vokal = nama.chars()
.filter(c -> "aeiouAEIOU".indexOf(c) >= 0)
.count();
System.out.println("Jumlah huruf vokal: " + vokal);
}
}Output yang Dihasilkan:
kolom: Budi
kolom: 85
kolom: Siti
kolom: 92
split limit 2: a | b,c,d
Jumlah huruf vokal: 5Bedah untuk contoh kedua:
- Baris 4-8 (
split(",")): teks CSV dipecah pada tiap koma, menghasilkan empat elemen —Budi,85,Siti,92. Pemisah koma tidak ikut masuk hasil. - Baris 10-11 (
split(",", 2)): dengan limit2, pemecahan berhenti setelah dua bagian; bagian kedua menampung sisa mentahb,c,d— terlihat pada outputa | b,c,d. Pola ini berguna memisahkan “bagian penting pertama” dari “sisa teks”, misalnya memisahkan key dan value. - Baris 13-16 (
chars()): stream karakter difilter dengan lambdac -> "aeiouAEIOU".indexOf(c) >= 0yang menyaring huruf vokal, lalucount()menghitungnya:Budi Santosomemuat5vokal. Tanpachars(), kita akan menulis perulangancharAt(i)manual.
Satu catatan penutup: karena String immutable, semua method di atas yang “mengubah” teks mengembalikan objek baru. Merangkai banyak operasi pada teks besar dalam perulangan tetap mahal — dan itulah pekerjaan yang diselesaikan StringBuilder pada chapter berikutnya.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
MethodString.java
Unduh berkaspublic class MethodString {
public static void main(String[] args) {
String teks = "Belajar Java itu menyenangkan";
System.out.println("length() : " + teks.length());
System.out.println("substring(8) : " + teks.substring(8));
System.out.println("substring(0, 7) : " + teks.substring(0, 7));
System.out.println("indexOf(\"Java\") : " + teks.indexOf("Java"));
System.out.println("indexOf(\"Kotlin\") : " + teks.indexOf("Kotlin"));
System.out.println("contains(\"itu\") : " + teks.contains("itu"));
System.out.println("toUpperCase() : " + teks.toUpperCase());
System.out.println("replace('a', 'o') : " + teks.replace('a', 'o'));
String jarang = " Java ";
System.out.println("strip() : [" + jarang.strip() + "]");
System.out.println("isBlank() : " + " ".isBlank());
System.out.println("trim vs strip : [" + "\u2000teks\u2000".trim() + "] [" + "\u2000teks\u2000".strip() + "]");
System.out.println("repeat(3) : " + "ab".repeat(3));
System.out.println("join : " + String.join(", ", "Budi", "Siti", "Dewi"));
}
}
PecahTeks.java
Unduh berkaspublic class PecahTeks {
public static void main(String[] args) {
String csv = "Budi,85,Siti,92";
String[] kolom = csv.split(",");
for (String k : kolom) {
System.out.println("kolom: " + k);
}
String[] duaBagian = "a,b,c,d".split(",", 2);
System.out.println("split limit 2: " + String.join(" | ", duaBagian));
String nama = "Budi Santoso";
long vokal = nama.chars()
.filter(c -> "aeiouAEIOU".indexOf(c) >= 0)
.count();
System.out.println("Jumlah huruf vokal: " + vokal);
}
}