Masukkan Password
11 1.10 String in Dart Programming Language | String Functions | Learn Dart Language | Dart Course
Materi pada transcript ini membahas String di Dart secara cukup lengkap, mulai dari menggabungkan String, mengecek panjang String, mengubah huruf besar/kecil, mengganti karakter, memecah String, mengambil sebagian String, sampai membalik String.
Ada beberapa istilah di caption yang salah karena hasil transkripsi suara, misalnya “DOT programming language” sebenarnya Dart programming language, dan “canigination/canation” maksudnya concatenation.
Mari kita bahas satu per satu dengan cara yang mudah dipahami.
1. Apa itu String?
String adalah tipe data yang digunakan untuk menyimpan teks.
Contoh:
String name = "Ahad";
String city = "Madiun";
String message = "Hello World";
Di sini:
"Ahad"
adalah String.
Begitu juga:
"Hello World"
Walaupun terdiri dari banyak karakter dan ada spasi, semuanya tetap dianggap satu String.
Analogi sederhana
Bayangkan String sebagai sebuah kalimat yang ditulis di dalam kotak.
┌───────────────────┐
│ Hello World │
└───────────────────┘
Variabel menyimpan kotak tersebut:
String text = "Hello World";
2. String Concatenation
Istilah yang digunakan di transcript adalah String concatenation.
Artinya:
Menggabungkan dua atau lebih String menjadi satu String.
Misalnya:
String firstName = "Ahad";
String lastName = "Hameed";
Kita ingin menghasilkan:
Ahad Hameed
Ada beberapa cara untuk melakukannya.
3. Concatenation menggunakan +
Cara paling sederhana adalah menggunakan operator +.
String firstName = "Ahad";
String lastName = "Hameed";
print(firstName + lastName);
Hasil:
AhadHameed
Perhatikan:
Tidak ada spasi.
Karena Dart hanya menggabungkan:
"Ahad" + "Hameed"
menjadi:
"AhadHameed"
Menambahkan spasi
Kalau ingin ada spasi di antara keduanya:
print(firstName + " " + lastName);
Hasil:
Ahad Hameed
Kita menambahkan String:
" "
" " adalah String yang berisi satu spasi.
Jadi sebenarnya:
firstName + " " + lastName
sama seperti:
"Ahad" + " " + "Hameed"
hasilnya:
"Ahad Hameed"
Cara membacanya
firstName + " " + lastName
Bisa dibaca:
gabungkan firstName, lalu satu spasi, lalu lastName.
4. Concatenation menggunakan String Interpolation
Cara kedua yang sangat sering digunakan di Dart adalah String interpolation.
Contoh:
String firstName = "Ahad";
String lastName = "Hameed";
print("$firstName $lastName");
Hasil:
Ahad Hameed
Kita memasukkan variabel ke dalam String menggunakan $.
"$firstName"
Artinya:
masukkan nilai dari variabel
firstNameke sini.
Apa bedanya dengan +?
Keduanya bisa menghasilkan hasil yang sama.
Menggunakan +
print(firstName + " " + lastName);
Menggunakan interpolation
print("$firstName $lastName");
Untuk String yang mengandung banyak variabel, interpolation biasanya lebih mudah dibaca.
Contoh:
String name = "Ahad";
int age = 25;
String city = "Madiun";
print("My name is $name, I am $age years old, and I live in $city.");
Hasil:
My name is Ahad, I am 25 years old, and I live in Madiun.
5. Properti/String Methods yang akan kita pelajari
Transcript kemudian masuk ke berbagai property dan method String.
Yang dibahas antara lain:
| Property/Method | Fungsi |
|---|---|
isEmpty | Mengecek apakah String kosong |
isNotEmpty | Mengecek apakah String tidak kosong |
length | Menghitung jumlah karakter |
toLowerCase() | Mengubah menjadi huruf kecil |
toUpperCase() | Mengubah menjadi huruf besar |
trim() | Menghapus spasi di awal dan akhir |
replaceAll() | Mengganti semua kemunculan |
replaceFirst() | Mengganti kemunculan pertama |
split() | Memecah String menjadi List |
toString() | Mengubah nilai menjadi String |
substring() | Mengambil sebagian String |
Mari kita bahas satu per satu.
6. isEmpty
isEmpty digunakan untuk mengecek:
Apakah String kosong?
Contoh:
String name = "Ahad";
print(name.isEmpty);
Hasil:
false
Kenapa false?
Karena:
Ahad
tidak kosong.
Sekarang:
String name = "";
print(name.isEmpty);
Hasil:
true
Karena:
""
adalah String kosong.
Ingat
"Ahad".isEmpty
→ false
"".isEmpty
→ true
7. isNotEmpty
isNotEmpty adalah kebalikan dari isEmpty.
Contoh:
String name = "Ahad";
print(name.isNotEmpty);
Hasil:
true
Karena String tersebut memiliki isi.
Sedangkan:
String name = "";
print(name.isNotEmpty);
Hasil:
false
Cara mengingat
| String | isEmpty | isNotEmpty |
|---|---|---|
"" | true | false |
"Ahad" | false | true |
8. length
length digunakan untuk mengetahui jumlah karakter dalam String.
Contoh:
String name = "Ahmad";
print(name.length);
Hasil:
5
Karena:
A h m a d
0 1 2 3 4
Ada 5 karakter.
Spasi juga dihitung
Ini penting.
Misalnya:
String name = "Ahad ";
Ada:
A h a d [spasi] [spasi]
Maka:
print(name.length);
hasilnya:
6
Jadi spasi juga dianggap karakter.
9. toLowerCase()
Digunakan untuk mengubah semua huruf menjadi huruf kecil.
Contoh:
String name = "AHAD";
print(name.toLowerCase());
Hasil:
ahad
Contoh lain:
String text = "HELLO WORLD";
print(text.toLowerCase());
Hasil:
hello world
10. toUpperCase()
Kebalikannya.
toUpperCase() mengubah semua huruf menjadi huruf besar.
String name = "ahad";
print(name.toUpperCase());
Hasil:
AHAD
Perbandingan
String text = "Hello World";
print(text.toLowerCase());
print(text.toUpperCase());
Output:
hello world
HELLO WORLD
Cara mengingat
LOWER → kecil
UPPER → besar
11. trim()
Ini sangat penting ketika bekerja dengan user input.
trim() digunakan untuk menghapus whitespace/spasi di bagian awal dan akhir String.
Misalnya:
String name = " Ahad ";
Ada dua spasi sebelum Ahad dan dua spasi setelahnya.
Kalau kita cek:
print(name.length);
Hasil:
8
Karena:
" Ahad "
terdiri dari:
2 spasi
4 karakter Ahad
2 spasi
Total:
2 + 4 + 2 = 8
Menggunakan trim()
String name = " Ahad ";
print(name.trim());
Hasil:
Ahad
Spasi di awal dan akhir dihapus.
Kalau:
print(name.trim().length);
hasil:
4
Yang perlu diperhatikan
trim() menghapus spasi di awal dan akhir, bukan spasi di tengah.
Contoh:
String text = " Hello World ";
print(text.trim());
hasil:
Hello World
Spasi antara:
Hello World
tetap ada.
12. replaceAll()
Sekarang kita masuk ke operasi yang sangat berguna.
replaceAll() digunakan untuk:
mengganti semua kemunculan karakter atau teks tertentu.
Misalnya:
String text = "banana";
print(text.replaceAll("a", "A"));
Hasil:
bAnAnA
Semua a diganti menjadi A.
Cara kerja
text.replaceAll("a", "A")
Bisa dibaca:
Cari semua
"a"di dalamtext, kemudian ganti dengan"A".
Misalnya:
banana
↓ ↓ ↓
a a a
semuanya diganti.
13. replaceFirst()
replaceFirst() hampir sama dengan replaceAll().
Perbedaannya:
replaceFirst()hanya mengganti kemunculan pertama.
Contoh:
String text = "banana";
print(text.replaceFirst("a", "A"));
Hasil:
bAnana
Hanya a pertama yang diganti.
Perbandingan
Misalnya:
String text = "banana";
replaceAll
text.replaceAll("a", "A");
hasil:
bAnAnA
replaceFirst
text.replaceFirst("a", "A");
hasil:
bAnana
Cara mengingat
replaceAll → ganti semuanya
replaceFirst → ganti yang pertama saja
Dan kata first di sini bukan berarti karakter harus berada di posisi indeks 0.
Maksudnya adalah:
kemunculan pertama dari target yang dicari.
14. split()
split() adalah salah satu method String yang sangat penting.
Fungsinya:
Memecah sebuah String menjadi beberapa bagian dan menghasilkan
List<String>.
Misalnya:
String text = "Happy New Year";
print(text.split(" "));
Kita memberikan:
" "
sebagai pemisah.
Hasilnya:
[Happy, New, Year]
Sekarang String:
Happy New Year
telah dipecah menjadi tiga bagian:
Happy
New
Year
dan hasilnya adalah:
List<String>
15. Kenapa split() menghasilkan List?
Karena setelah dipecah, kita memiliki beberapa String.
Misalnya:
String text = "Happy New Year";
List<String> words = text.split(" ");
Sekarang:
words
berisi:
[Happy, New, Year]
Kita bisa menggunakan indexing.
print(words[0]);
Hasil:
Happy
print(words[1]);
Hasil:
New
print(words[2]);
Hasil:
Year
Ingat materi sebelumnya:
Index List dimulai dari 0.
16. split() dengan koma
Pemisah tidak harus spasi.
Misalnya:
String text = "Apple,Banana,Orange";
List<String> fruits = text.split(",");
Hasil:
[Apple, Banana, Orange]
Kita bisa mengambil:
print(fruits[0]);
hasil:
Apple
17. split() dengan tanda -
Misalnya:
String text = "2026-09-08";
print(text.split("-"));
Hasil:
[2026, 09, 08]
Jadi parameter split() adalah pemisah/delimiter.
Contoh:
text.split(" ")
berarti pecah berdasarkan spasi.
text.split(",")
berarti pecah berdasarkan koma.
text.split("-")
berarti pecah berdasarkan tanda -.
18. split("") untuk memecah menjadi karakter
Ini menarik.
Kalau:
String text = "Hello";
print(text.split(""));
hasilnya berupa List karakter:
[H, e, l, l, o]
Sekarang setiap karakter menjadi elemen List.
19. toString()
toString() digunakan untuk mendapatkan representasi String dari suatu nilai.
Contoh:
int number = 10;
String text = number.toString();
print(text);
Hasil:
10
Sekarang:
number
adalah:
int
sedangkan:
text
adalah:
String
Ingat arah konversinya
int → String
gunakan:
toString()
Contoh:
int age = 25;
String ageText = age.toString();
Sebaliknya:
String → int
gunakan:
int.parse()
Contoh:
String text = "25";
int age = int.parse(text);
Ini berkaitan langsung dengan materi user input yang kita bahas sebelumnya.
20. substring()
Sekarang masuk ke salah satu konsep paling penting.
substring() digunakan untuk:
mengambil sebagian dari sebuah String.
Misalnya:
String text = "Happy New Year";
Kita ingin mengambil:
ppy
Mari lihat index-nya.
H a p p y
0 1 2 3 4
Jadi:
H → 0
a → 1
p → 2
p → 3
y → 4
Kalau ingin mulai dari p pertama:
text.substring(2)
Hasil:
ppy New Year
Kenapa?
Karena 2 adalah index p pertama.
21. substring() dengan ending index
substring() bisa menerima dua parameter:
substring(start, end)
Contoh:
String text = "Happy";
print(text.substring(2, 4));
Hasil:
pp
Kenapa bukan ppy?
Karena ending index tidak ikut diambil.
Ini aturan yang sangat penting.
substring(start, end)
berarti:
mulai dari start
sampai sebelum end
Visualisasi
H a p p y
0 1 2 3 4
Kalau:
text.substring(2, 4)
yang diambil:
index 2 → p
index 3 → p
Index 4 tidak ikut.
Jadi:
pp
22. Kenapa substring(2, 5) menghasilkan ppy?
Karena:
H a p p y
0 1 2 3 4
text.substring(2, 5)
mengambil:
index 2 → p
index 3 → p
index 4 → y
Index 5 tidak ada di String, tetapi digunakan sebagai batas akhir.
Hasil:
ppy
Cara mengingat
Start masuk, end tidak masuk.
Atau:
Mulai dari index pertama, berhenti sebelum index kedua.
23. Mengambil kata Happy
Misalnya:
String text = "Happy New Year";
Kita ingin mengambil:
Happy
Index-nya:
H a p p y
0 1 2 3 4
Maka:
print(text.substring(0, 5));
Hasil:
Happy
Karena index:
0
1
2
3
4
diambil, sedangkan 5 tidak.
24. Capitalize huruf pertama
Transcript juga menunjukkan bagaimana membuat huruf pertama menjadi kapital.
Misalnya:
String name = "ahad";
Kita ingin:
Ahad
Dart tidak memiliki method sederhana bernama misalnya:
capitalizeFirst()
yang langsung melakukan semuanya.
Kita bisa membuatnya sendiri menggunakan kombinasi:
- indexing
toUpperCase()substring()+
Langkah pertama: ambil karakter pertama
Karakter pertama ada di index 0.
name[0]
Untuk:
ahad
hasilnya:
a
Kemudian:
name[0].toUpperCase()
menjadi:
A
Langkah kedua: ambil sisanya
Kita ingin mengambil:
had
Index-nya dimulai dari 1.
name.substring(1)
hasil:
had
Langkah ketiga: gabungkan
String name = "ahad";
String result =
name[0].toUpperCase() + name.substring(1);
print(result);
Hasil:
Ahad
Logikanya
ahad
│
├── a → uppercase → A
│
└── had → tetap had
A + had = Ahad
Ini contoh yang bagus tentang bagaimana beberapa String method dapat digabungkan.
25. Membalik String
Sekarang kita masuk bagian yang sedikit lebih rumit:
Bagaimana membalik String?
Misalnya:
Hello
menjadi:
olleH
Dart tidak memiliki method sederhana seperti:
text.reverse()
untuk String.
Kita dapat melakukannya dengan beberapa langkah.
26. Langkah pertama: split("")
Misalnya:
String text = "Hello";
List<String> characters = text.split("");
Hasil:
[H, e, l, l, o]
Sekarang String sudah berubah menjadi List karakter.
27. Langkah kedua: reversed
List tersebut bisa dibalik menggunakan:
characters.reversed
Hasil urutannya menjadi:
[o, l, l, e, H]
Tetapi ada satu hal penting.
reversed menghasilkan iterable, bukan langsung String.
Jadi kita belum selesai.
28. Langkah ketiga: join("")
Sekarang kita ingin menggabungkan:
[o, l, l, e, H]
menjadi:
olleH
Gunakan:
join("")
Contoh lengkap:
String text = "Hello";
String reversedText =
text.split("").reversed.join("");
print(reversedText);
Hasil:
olleH
29. Memahami kode reverse secara perlahan
Kode:
text.split("").reversed.join("")
terlihat cukup rumit untuk pemula.
Mari pecah menjadi tiga langkah.
Langkah 1
text.split("")
"Hello"
menjadi:
[H, e, l, l, o]
Langkah 2
.reversed
menjadi:
[o, l, l, e, H]
Langkah 3
.join("")
menjadi:
"olleH"
Jadi:
String
↓
split("")
↓
List karakter
↓
reversed
↓
urutan dibalik
↓
join("")
↓
String kembali
30. Apa fungsi join()?
join() digunakan untuk menggabungkan elemen-elemen List menjadi satu String.
Contoh:
List<String> words = ["Hello", "World"];
print(words.join(" "));
Hasil:
Hello World
Parameter:
" "
adalah pemisah antar elemen.
Contoh:
List<String> words = ["A", "B", "C"];
print(words.join("-"));
Hasil:
A-B-C
Kalau:
words.join("")
hasilnya:
ABC
31. split() dan join() seperti pasangan
Ini konsep yang sangat bagus untuk diingat.
split()
String → List
"Hello"
↓
[H, e, l, l, o]
join()
List → String
[H, e, l, l, o]
↓
"Hello"
Jadi:
split → memecah
join → menyatukan
32. Kenapa reversed tidak langsung menjadi String?
Misalnya:
var result = text.split("").reversed;
result bukan String.
Ia adalah sesuatu yang dapat diiterasi, yaitu Iterable<String>.
Karena itu kita perlu:
.join("")
untuk mengubah elemen-elemen tersebut menjadi satu String.
Jadi jangan bingung jika melihat:
reversed
dan hasilnya bukan:
olleH
secara langsung.
33. Contoh program lengkap
Sekarang kita gabungkan banyak materi String yang sudah dipelajari.
void main() {
String firstName = "Ahad";
String lastName = "Hameed";
// Concatenation
print(firstName + " " + lastName);
// Interpolation
print("$firstName $lastName");
// isEmpty
print(firstName.isEmpty);
// isNotEmpty
print(firstName.isNotEmpty);
// length
print(firstName.length);
// Lowercase
print(firstName.toLowerCase());
// Uppercase
print(firstName.toUpperCase());
// Trim
String text = " Hello ";
print(text.trim());
// Replace
print(firstName.replaceAll("a", "A"));
// Split
String sentence = "Happy New Year";
List<String> words = sentence.split(" ");
print(words);
print(words[0]);
// Substring
print(sentence.substring(0, 5));
// Reverse
print(sentence.split("").reversed.join(""));
}
34. Hubungan dengan materi User Input
Materi String ini sangat berhubungan dengan materi sebelumnya tentang user input.
Misalnya user memasukkan nama:
import 'dart:io';
void main() {
print("Enter your name:");
String name = stdin.readLineSync()!;
print("Hello $name");
}
Tetapi user mungkin memasukkan:
Ahad
dengan spasi di depan.
Kita bisa membersihkannya:
String name = stdin.readLineSync()!.trim();
Sekarang input:
Ahad
menjadi:
Ahad
Ini salah satu contoh penggunaan String method dalam program nyata.
35. Contoh: validasi input kosong
Kita juga bisa menggabungkan isEmpty.
import 'dart:io';
void main() {
print("Enter your name:");
String name = stdin.readLineSync()!.trim();
if (name.isEmpty) {
print("Name cannot be empty");
} else {
print("Hello $name");
}
}
Alurnya:
User memasukkan data
↓
readLineSync()
↓
trim()
↓
cek isEmpty
↓
kosong?
↙ ↘
ya tidak
↓ ↓
error lanjut
Ini mulai menghubungkan materi:
- User Input
- String
- Boolean
- Relational/Logical concepts
if
36. Kesalahan yang sering dilakukan pemula
Kesalahan 1 — Mengira length hanya menghitung huruf
Misalnya:
String text = "Hi ";
length bukan 2.
Hasilnya:
3
Karena spasi juga dihitung.
Kesalahan 2 — Mengira trim() menghapus semua spasi
String text = "Hello World";
text.trim()
tetap:
Hello World
Karena trim() hanya menghapus whitespace di awal dan akhir.
Kesalahan 3 — Bingung replaceAll() dan replaceFirst()
replaceAll()
→ semua kemunculan.
replaceFirst()
→ kemunculan pertama.
Kesalahan 4 — Lupa bahwa index dimulai dari 0
H a p p y
0 1 2 3 4
Bukan:
1 2 3 4 5
Kesalahan 5 — Lupa bahwa ending index tidak termasuk
text.substring(0, 5)
bukan berarti mengambil index:
0,1,2,3,4,5
Tetapi:
0,1,2,3,4
Jadi:
start termasuk, end tidak termasuk.
Kesalahan 6 — Menganggap split() menghasilkan String
String text = "Hello World";
var result = text.split(" ");
result adalah:
List<String>
bukan String.
Hasilnya:
[Hello, World]
37. Cheat Sheet String Dart
| Kode | Fungsi | Contoh hasil |
|---|---|---|
a + b | Gabungkan String | "Hi" + "!" → "Hi!" |
"$name" | String interpolation | "Hello $name" |
.isEmpty | Cek kosong | "" → true |
.isNotEmpty | Cek tidak kosong | "Hi" → true |
.length | Jumlah karakter | "Hello" → 5 |
.toLowerCase() | Huruf kecil | "HELLO" → "hello" |
.toUpperCase() | Huruf besar | "hello" → "HELLO" |
.trim() | Hapus whitespace awal/akhir | " Hi " → "Hi" |
.replaceAll("a","b") | Ganti semua | "aaa" → "bbb" |
.replaceFirst("a","b") | Ganti pertama | "aaa" → "baa" |
.split(" ") | Pecah menjadi List | "A B" → ["A","B"] |
.toString() | Nilai → String | 10 → "10" |
.substring(2) | Ambil dari index 2 | "Hello" → "llo" |
.substring(1,4) | Ambil index 1 sampai sebelum 4 | "Hello" → "ell" |
.reversed | Balik urutan iterable | [A,B] → [B,A] |
.join("") | Gabungkan List → String | [H,i] → "Hi" |
38. Cara paling mudah mengingat materi ini
Bayangkan kita mempunyai String:
String text = "Hello World";
Kemudian kita bisa melakukan beberapa hal:
"Hello World"
│
┌───────────────┼────────────────┐
↓ ↓ ↓
length uppercase lowercase
│ │ │
11 "HELLO WORLD" "hello world"
Atau:
"Hello World"
│
├── split(" ") ──→ ["Hello", "World"]
│
├── substring(...) ──→ sebagian teks
│
├── replaceAll(...) ──→ teks yang diganti
│
├── trim() ──→ menghapus spasi luar
│
└── toUpperCase() ──→ huruf besar
Dan untuk reverse:
"Hello"
↓
split("")
↓
[H,e,l,l,o]
↓
reversed
↓
[o,l,l,e,H]
↓
join("")
↓
"olleH"
39. Kesimpulan besar
Dari materi ini, ada beberapa konsep utama yang sebaiknya benar-benar kamu kuasai:
1. Menggabungkan String
firstName + " " + lastName
atau:
"$firstName $lastName"
2. Mengecek String
text.isEmpty
text.isNotEmpty
text.length
3. Mengubah huruf
text.toLowerCase()
text.toUpperCase()
4. Membersihkan String
text.trim()
5. Mengganti teks
text.replaceAll("a", "A")
text.replaceFirst("a", "A")
6. Memecah String
text.split(" ")
hasilnya:
List<String>
7. Mengambil sebagian String
text.substring(start, end)
dengan aturan:
start masuk, end tidak masuk.
8. Mengubah nilai menjadi String
number.toString()
9. Membalik String
text.split("").reversed.join("")
Latihan supaya benar-benar paham
Coba tebak output dari kode berikut sebelum menjalankannya:
Soal 1
String name = "ahad";
print(name.toUpperCase());
Soal 2
String text = "Hello";
print(text.length);
Soal 3
String text = "banana";
print(text.replaceFirst("a", "A"));
Soal 4
String text = "I Love Dart";
print(text.split(" "));
Soal 5
String text = "Hello";
print(text.substring(1, 4));
Soal 6
Bagaimana cara mengubah:
"hello"
menjadi:
"Hello"
menggunakan toUpperCase() dan substring()?
Kalau kamu sudah memahami materi ini, String + List + User Input mulai menjadi kombinasi yang sangat berguna untuk membuat program Dart yang benar-benar interaktif.