Seluruh peralatan Section ini — array, method String, StringBuilder, text block, regex — bermuara pada satu kemampuan praktis: mengubah teks mentah menjadi teks yang rapi dan siap dipakai. Data dari formulir pengguna datang dengan kapitalisasi acak; laporan dari sistem lain tiba sebagai CSV koma berantakan; tabel keluaran perlu kolom sejajar agar terbaca. Chapter penutup ini merangkai semuanya dalam tiga studi kasus nyata: normalisasi nama orang, format ulang data CSV menjadi laporan berkolom, dan teknik padding untuk menyusun teks dalam kolom tetap.
Studi Kasus Normalisasi Nama #
Nama orang dari input bebas jarang rapi: ada yang huruf kecil semua, ada yang kapital semua, ada pula yang berkelebihan spasi di ujung dan di tengah. Strategi normalisasinya: buang spasi ujung dengan trim, seragamkan ke huruf kecil dengan toLowerCase, pecah per kata dengan split("\\s+") (pola satu-atau-lebih spasi), lalu kapitalkan huruf pertama tiap kata dan rangkai kembali dengan StringBuilder.
import java.util.StringJoiner;
public class StudiKasusTeks {
public static void main(String[] args) {
String[] namaMentah = {"budi santoso", "SITI rahayu", " dewi lestari "};
System.out.println("Normalisasi nama:");
for (String mentah : namaMentah) {
System.out.println("\"" + mentah + "\" -> \"" + kapitalisasi(mentah) + "\"");
}
StringJoiner penggabung = new StringJoiner(", ", "[", "]");
for (String mentah : namaMentah) {
penggabung.add(kapitalisasi(mentah));
}
System.out.println("Gabungan : " + penggabung);
System.out.println();
System.out.println("Format ulang CSV:");
String csv = "Budi,85\nSiti,92\nDewi,78";
for (String baris : csv.split("\n")) {
String[] kolom = baris.split(",");
System.out.printf("%-8s: %3d%n", kolom[0], Integer.parseInt(kolom[1]));
}
}
static String kapitalisasi(String nama) {
String[] kata = nama.trim().toLowerCase().split("\\s+");
StringBuilder hasil = new StringBuilder();
for (String k : kata) {
hasil.append(Character.toUpperCase(k.charAt(0)))
.append(k.substring(1))
.append(' ');
}
return hasil.toString().trim();
}
}Output yang Dihasilkan:
Normalisasi nama:
"budi santoso" -> "Budi Santoso"
"SITI rahayu" -> "Siti Rahayu"
" dewi lestari " -> "Dewi Lestari"
Gabungan : [Budi Santoso, Siti Rahayu, Dewi Lestari]
Format ulang CSV:
Budi : 85
Siti : 92
Dewi : 78Mari kita telaah bagian-bagian kuncinya:
- Baris 37 (
nama.trim().toLowerCase().split("\\s+")): rantai tiga operasi —trimmembuang spasi ujung pada" dewi lestari ",toLowerCasemeratakan"SITI rahayu", dansplit("\\s+")memecah per kata sekaligus menyerap spasi ganda berlebih menjadi satu pemisah. Hasilnya daftar kata bersih tanpa spasi hantu di antaranya. - Baris 39-45 (perulangan kapitalisasi): untuk tiap kata,
Character.toUpperCase(k.charAt(0))mengkapitalkan huruf pertama dank.substring(1)mengambil sisanya, keduanya ditempel keStringBuilderberakhir satu spasi.toString().trim()di akhir membuang spasi terakhir yang menempel. - Baris 12-16 (
StringJoiner): class penggabung modern dengan pemisah, prefiks, dan sufiks —new StringJoiner(", ", "[", "]")merakit hasil menjadi[Budi Santoso, Siti Rahayu, Dewi Lestari]. Dibanding mengelola koma manual,StringJoinermenangani pemisah hanya di antara elemen. - Baris 21-25 (format ulang CSV):
csv.split("\n")memecah per baris,baris.split(",")memecah per kolom, laluprintf("%-8s: %3d%n", ...)mencetak kolom nama rata kiri selebar 8 karakter dan angka rata kanan selebar 3 —Integer.parseIntmengubah teks"85"menjadi angka agar format%dbisa bekerja.
Padding untuk Tabel Rapi #
Padding adalah teknik menambah spasi hingga teks mencapai lebar kolom tetap. Format %-8s (rata kiri) dan %6d (rata kanan) pada printf menyelesaikannya sekaligus; Java modern juga menyediakan " ".repeat(n) untuk membangun padding secara manual, misalnya memusatkan judul di tengah kolom.
public class TeksRapi {
public static void main(String[] args) {
String[] nama = {"Budi", "Siti", "Dewi"};
int[] nilai = {85, 92, 78};
System.out.println("Tabel dengan printf:");
for (int i = 0; i < nama.length; i++) {
System.out.printf("|%-8s|%6d|%n", nama[i], nilai[i]);
}
String garis = "-".repeat(18);
System.out.println(garis);
String judul = padTengah("Judul", 15);
System.out.println("[" + judul + "]");
}
static String padTengah(String teks, int lebar) {
int kiri = (lebar - teks.length()) / 2;
int kanan = lebar - teks.length() - kiri;
return " ".repeat(kiri) + teks + " ".repeat(kanan);
}
}Output yang Dihasilkan:
Tabel dengan printf:
|Budi | 85|
|Siti | 92|
|Dewi | 78|
------------------
[ Judul ]Bedah singkatnya: baris 9 memakai format gabungan |%-8s|%6d|%n — nama rata kiri selebar 8, angka rata kanan selebar 6, dan %n menghasilkan pemisah baris sesuai platform. Baris 13 membangun garis horizontal lewat "-".repeat(18) tanpa mengetik strip berulang. Method padTengah (baris 18-23) menghitung spasi kiri dan kanan dari selisih lebar, lalu merakit keduanya dengan repeat — pola yang sama dipakai alat pelaporan untuk memusatkan judul kolom.
Kita akhirnya tiba di ujung Section Array dan String. Dari larik satu dimensi hingga text block, bekalnya konsisten: pilih struktur yang tepat (array untuk kumpulan, String untuk teks beku, StringBuilder untuk teks yang dirakit), hormati sifat immutable String, dan manfaatkan pustaka standar sebelum menulis alat sendiri. Section berikutnya membawa pola pikir pengumpulan data ini lebih jauh ke Collections — ArrayList, HashMap, dan kawan-kawannya yang ukurannya hidup dan beroperasi lewat method, bukan indeks tetap.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
StudiKasusTeks.java
Unduh berkasimport java.util.StringJoiner;
public class StudiKasusTeks {
public static void main(String[] args) {
String[] namaMentah = {"budi santoso", "SITI rahayu", " dewi lestari "};
System.out.println("Normalisasi nama:");
for (String mentah : namaMentah) {
System.out.println("\"" + mentah + "\" -> \"" + kapitalisasi(mentah) + "\"");
}
StringJoiner penggabung = new StringJoiner(", ", "[", "]");
for (String mentah : namaMentah) {
penggabung.add(kapitalisasi(mentah));
}
System.out.println("Gabungan : " + penggabung);
System.out.println();
System.out.println("Format ulang CSV:");
String csv = "Budi,85\nSiti,92\nDewi,78";
for (String baris : csv.split("\n")) {
String[] kolom = baris.split(",");
System.out.printf("%-8s: %3d%n", kolom[0], Integer.parseInt(kolom[1]));
}
}
static String kapitalisasi(String nama) {
String[] kata = nama.trim().toLowerCase().split("\\s+");
StringBuilder hasil = new StringBuilder();
for (String k : kata) {
hasil.append(Character.toUpperCase(k.charAt(0)))
.append(k.substring(1))
.append(' ');
}
return hasil.toString().trim();
}
}
TeksRapi.java
Unduh berkaspublic class TeksRapi {
public static void main(String[] args) {
String[] nama = {"Budi", "Siti", "Dewi"};
int[] nilai = {85, 92, 78};
System.out.println("Tabel dengan printf:");
for (int i = 0; i < nama.length; i++) {
System.out.printf("|%-8s|%6d|%n", nama[i], nilai[i]);
}
String garis = "-".repeat(18);
System.out.println(garis);
String judul = padTengah("Judul", 15);
System.out.println("[" + judul + "]");
}
static String padTengah(String teks, int lebar) {
int kiri = (lebar - teks.length()) / 2;
int kanan = lebar - teks.length() - kiri;
return " ".repeat(kiri) + teks + " ".repeat(kanan);
}
}