Ce face String.contains
contains(x) returnează true dacă x apare oriunde în text. startsWith(x) verifică doar începutul, iar endsWith(x) doar sfârșitul. Toate fac diferența între litere mari și mici.
contains și startsWith acceptă și o RegExp: text.contains(RegExp(r'[0-9]')) verifică dacă există măcar o cifră. Al doilea parametru, opțional, spune de la ce poziție începe căutarea. endsWith primește doar text.
Textul gol este conținut în orice text: 'Ana'.contains('') este true. Dacă vrei și poziția, folosește indexOf.
Parametri
| Parametru | Descriere |
|---|---|
other / pattern |
Textul sau expresia regulată căutată. |
startIndex / index |
Poziția de la care se caută (opțional). |
Ce returnează
Un bool.
Exemple
Exemplul 1: Verificări simple
void main() {
var fisier = 'raport_iasi_2026.pdf';
print(fisier.contains('iasi'));
print(fisier.contains('Iasi'));
print(fisier.startsWith('raport'));
print(fisier.endsWith('.pdf'));
print(fisier.endsWith('.docx'));
print(fisier.contains(RegExp(r'\d{4}')));
print(fisier.startsWith('iasi', 7));
}
Rezultat
true
false
true
true
false
true
true
Exemplul 2: Verificarea unei parole
List<String> probleme(String parola) {
var lipsa = <String>[];
if (parola.length < 8) lipsa.add('minim 8 caractere');
if (!parola.contains(RegExp(r'[A-Z]'))) lipsa.add('o literă mare');
if (!parola.contains(RegExp(r'[0-9]'))) lipsa.add('o cifră');
if (parola.toLowerCase().contains('parola')) lipsa.add('fără cuvântul „parola”');
return lipsa;
}
void main() {
for (var p in ['ana', 'Parola123', 'Iasi2026!']) {
var l = probleme(p);
print(l.isEmpty ? '$p: bună' : '$p: lipsește ${l.join(', ')}');
}
}
Rezultat
ana: lipsește minim 8 caractere, o literă mare, o cifră
Parola123: lipsește fără cuvântul „parola”
Iasi2026!: bună
Exemplul 3: Filtrarea fișierelor după extensie
void main() {
var fisiere = ['poza1.JPG', 'notite.txt', 'vacanta.jpg', 'buget.xlsx', 'logo.png'];
var imagini = fisiere.where((f) {
var mic = f.toLowerCase();
return mic.endsWith('.jpg') || mic.endsWith('.png');
});
print(imagini.toList());
}
Rezultat
[poza1.JPG, vacanta.jpg, logo.png]
Greșeli frecvente
- Uiți că verificarea face diferența între litere mari și mici. Transformă ambele texte cu
toLowerCase()înainte. - Dai o
RegExpluiendsWith: nu compilează. FoloseșteRegExp(r'...$').hasMatch(text).
Comenzi înrudite
String.indexOf: Returnează poziția primei (indexOf) sau ultimei (lastIndexOf) apariții a unui text, sau -1 dacă lipsește.String.toUpperCase: Returnează textul transformat în litere mari (toUpperCase) sau mici (toLowerCase).RegExp.hasMatch: hasMatch spune dacă modelul apare în text; stringMatch returnează textul primei potriviri sau null.