dartstringmethodPemula5 mnt baca

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

dart
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:

dart
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

dart
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

dart
// SALAH: hasil tidak disimpan
void main() {
  String teks = '  halo  ';
  teks.trim(); // hasil dibuang!
  print('[$teks]'); // [  halo  ], tidak berubah
}
dart
// BENAR
void main() {
  String teks = '  halo  ';
  teks = teks.trim();
  print('[$teks]'); // [halo]
}

2. substring dengan index kebablasan

dart
void main() {
  String s = 'Dart';
  // print(s.substring(0, 10)); // RangeError!
  print(s.substring(0, s.length)); // aman
}

3. split dengan delimiter yang salah

dart
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 seperti split, replaceAll, dan contains semuanya menerima RegExp sebagai alternatif string biasa.

Latihan kilat: normalisasi nama

dart
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'.

text
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?