Method String Esensial
Mengolah teks: split, join, replace, trim, contains, dan konversi case.
Teks jarang dipakai mentah-mentah
Data teks dari dunia nyata jarang rapi: ada spasi berlebih, huruf besar-kecil campur, perlu dipotong atau digabung. Method String adalah perkakas bawaan untuk mengolah teks tanpa menulis loop manual.
Analogi: string mentah itu seperti bahan makanan mentah. Method string adalah alat dapur: pisau (split), blender (join), parutan (replace). Kamu tidak makan bahan mentah, kamu mengolahnya dulu.
Kenapa method string penting?
Karena sebagian besar program berurusan dengan teks: input pengguna, data API, nama file, pesan. Tiga baris method bawaan sering menggantikan 20 baris loop manual yang rawan salah.
Method yang paling sering dipakai
void main() {
String teks = ' Halo Dunia Dart ';
print(teks.trim()); // 'Halo Dunia Dart', buang spasi ujung
print(teks.toLowerCase()); // ' halo dunia dart '
print(teks.toUpperCase()); // ' HALO DUNIA DART '
print(teks.contains('Dunia')); // true
print(teks.startsWith(' Halo')); // true
print(teks.length); // 19, termasuk spasi
}Ingat: String di Dart immutable (tidak bisa diubah). Semua method mengembalikan string BARU; yang asli tidak berubah.
Contoh kedua, split dan replace:
void main() {
String kalimat = 'apel,mangga,pisang';
// split: pecah string jadi list
var buah = kalimat.split(',');
print(buah); // [apel, mangga, pisang]
// replaceAll: ganti semua kemunculan
var sensor = 'Nama saya *** dan umur ** tahun';
print(sensor.replaceAll('*', 'x'));
// substring: potong bagian
String kode = 'DART-2026-ID';
print(kode.substring(0, 4)); // DART
print(kode.substring(5)); // 2026-ID
// padLeft/padRight: samakan lebar
print('7'.padLeft(3, '0')); // 007
}split + join adalah pasangan abadi: pecah untuk diolah, gabung untuk ditampilkan.
Membersihkan input pengguna
void main() {
// Simulasi input berantakan dari pengguna
String input = ' BuDi SaNtOsO ';
String bersih = input.trim().toLowerCase();
print('[$bersih]'); // [budi santoso]
// Kapitalisasi kata pertama tiap kata
var kata = bersih.split(' ');
var rapi = kata.map((k) {
if (k.isEmpty) return k;
return k[0].toUpperCase() + k.substring(1);
}).join(' ');
print(rapi); // Budi Santoso
}Rantai method (trim().toLowerCase()) dibaca kiri ke kanan seperti aliran pengolahan. Pola ini idiomatis di Dart.
Kesalahan umum
1. Mengira method mengubah string asli
// SALAH: hasil tidak disimpan
void main() {
String teks = ' halo ';
teks.trim(); // hasil dibuang!
print('[$teks]'); // [ halo ], tidak berubah
}// BENAR
void main() {
String teks = ' halo ';
teks = teks.trim();
print('[$teks]'); // [halo]
}2. substring dengan index kebablasan
void main() {
String s = 'Dart';
// print(s.substring(0, 10)); // RangeError!
print(s.substring(0, s.length)); // aman
}3. split dengan delimiter yang salah
void main() {
var data = 'a,b,c'.split(';'); // [a,b,c], tidak terpecah!
print(data.length); // 1, karena tidak ada ';'
print('a,b,c'.split(',')); // [a, b, c], BENAR
}Selalu pastikan delimiter benar-benar ada di string.
Kesimpulan
Method string esensial: trim, toLowerCase/toUpperCase, contains, split, join, replaceAll, substring, padLeft. Ingat string immutable: selalu simpan hasilnya. Rantai method membuat pengolahan teks terbaca seperti aliran.
Catatan teknis: Untuk pencarian pola kompleks (email, nomor telepon), Dart punya
RegExp. Method sepertisplit,replaceAll, dancontainssemuanya menerima RegExp sebagai alternatif string biasa.
Latihan kilat: normalisasi nama
void main() {
// Data mentah dari form: berantakan
var mentah = [' budi SANTOSO ', 'ANI wijaya', ' dewi LESTARI '];
var rapi = mentah.map((n) {
var kata = n.trim().split(RegExp(r'\s+'));
return kata.map((k) => k[0].toUpperCase() + k.substring(1).toLowerCase()).join(' ');
}).toList();
print(rapi); // [Budi Santoso, Ani Wijaya, Dewi Lestari]
}Satu rantai map menyelesaikan pekerjaan nyata: trim spasi liar, pecah kata (regex \s+ menangani spasi ganda), kapitalisasi tiap kata, gabung kembali. Inilah method string dalam aksi: dari data kotor menjadi data siap tampil, tanpa satu pun loop manual.
Tantangan
Pembersih nama
Buat fungsi rapikanNama(String input) yang: trim spasi, lowercase semua, lalu kapitalisasi huruf pertama tiap kata. Uji dengan ' bUdI sAnToSo ' → 'Budi Santoso'.
String rapikanNama(String input) {
// TODO
return '';
}
void main() {
print(rapikanNama(' bUdI sAnToSo '));
}Kuis Bab
Uji pemahamanmu: Bab 1: Dasar-Dasar Dart
Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".
1.Manakah cara yang benar mendeklarasikan variabel string di Dart?
2.Manakah pernyataan yang BENAR tentang final dan const?
3.Apa output dari: int a = 7; int b = 2; print(a ~/ b);
4.Apa output dari: var nama = 'Ani'; print('Halo $nama!');
5.Bagaimana cara menjalankan file Dart bernama main.dart?