Ce face String.allMatches
Un String este și un Pattern, deci poate căuta în alt text. 'ana'.allMatches(text) returnează toate aparițiile textului 'ana' în text. Atenție la ordine: textul pe care apelezi metoda este ce cauți, iar argumentul este unde cauți.
Fiecare rezultat este un Match cu start (poziția de început), end (poziția de după ultimul caracter) și group(0) (textul găsit). Aparițiile nu se suprapun: în 'aaaa', textul 'aa' apare de 2 ori, nu de 3.
Pentru a număra rapid aparițiile: cuvant.allMatches(text).length. Pentru căutări cu modele (cifre, cuvinte) folosește RegExp.allMatches, care funcționează la fel.
Parametri
| Parametru | Descriere |
|---|---|
string |
Textul în care se caută. |
start |
Poziția de la care începe căutarea. |
Ce returnează
Un Iterable<Match> (leneș: căutarea se face pe măsură ce îl parcurgi).
Exemple
Exemplul 1: Numărarea aparițiilor
Căutarea face diferența între litere mari și mici: „Ana” de la început nu este găsit, dar „ana” din „Ioana” și „Dana” da.
void main() {
var text = 'Ana și Ioana au plecat la Dana';
var gasite = 'ana'.allMatches(text);
print(gasite.length);
for (var m in gasite) {
print('poziția ${m.start}-${m.end}: ${m.group(0)}');
}
print('aa'.allMatches('aaaa').length);
}
Rezultat
2
poziția 9-12: ana
poziția 27-30: ana
2
Exemplul 2: Cuvântul cel mai des întâlnit
void main() {
var text = 'mere pere mere prune mere pere';
var cuvinte = text.split(' ').toSet();
for (var c in cuvinte) {
var n = c.allMatches(text).length;
print('$c: $n');
}
}
Rezultat
mere: 3
pere: 2
prune: 1
Greșeli frecvente
- Inversezi argumentele:
text.allMatches('ana')caută tottextîn'ana'și nu găsește nimic. - Numeri cu
allMatchesun cuvânt care apare și în alte cuvinte ('ana'în'Ioana'). FoloseșteRegExp(r'\bana\b').
Comenzi înrudite
RegExp.allMatches: Returnează toate potrivirile modelului în text, ca o colecție de obiecte RegExpMatch.Pattern: Interfața comună pentru String și RegExp: orice lucru care poate fi căutat într-un text.String.indexOf: Returnează poziția primei (indexOf) sau ultimei (lastIndexOf) apariții a unui text, sau -1 dacă lipsește.