String.contains în Dart

Verifică dacă textul conține o bucată (contains), începe cu ea (startsWith) sau se termină cu ea (endsWith).

Sintaxă
bool contains(Pattern other, [int startIndex = 0])
bool startsWith(Pattern pattern, [int index = 0])
bool endsWith(String other)

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 RegExp lui endsWith: nu compilează. Folosește RegExp(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.