Ce face String.splitMapJoin
splitMapJoin face trei lucruri dintr-o dată. Taie textul în bucățile care se potrivesc cu modelul și cele dintre ele. Transformă potrivirile cu onMatch și restul cu onNonMatch. Apoi lipește totul la loc, în aceeași ordine.
Ambele funcții sunt opționale. Dacă lipsește onMatch, potrivirea rămâne cum este; dacă lipsește onNonMatch, textul dintre potriviri rămâne neschimbat. onMatch primește un Match (cu grupuri, dacă modelul este o RegExp), iar onNonMatch primește bucata de text.
Este potrivit când vrei să tratezi diferit două feluri de text, de exemplu să evidențiezi numerele și să scrii restul cu litere mari. Dacă vrei să schimbi doar potrivirile, replaceAllMapped este mai simplu.
Parametri
| Parametru | Descriere |
|---|---|
pattern |
Modelul căutat (text sau RegExp). |
onMatch |
Transformă fiecare potrivire. |
onNonMatch |
Transformă fiecare bucată dintre potriviri. |
Ce returnează
Un String nou.
Exemple
Exemplul 1: Evidențierea numerelor
void main() {
var text = 'Ana are 3 mere și 12 pere';
var rezultat = text.splitMapJoin(
RegExp(r'\d+'),
onMatch: (m) => '[${m[0]}]',
onNonMatch: (s) => s.toUpperCase(),
);
print(rezultat);
}
Rezultat
ANA ARE [3] MERE ȘI [12] PERE
Exemplul 2: Marcarea unui cuvânt căutat în HTML
Cuvântul găsit este pus în <mark>, iar restul textului este „scăpat” pentru HTML.
String escape(String s) => s.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>');
void main() {
var text = 'Iași <capitala Moldovei> & Iași-ul vechi';
print(text.splitMapJoin(
'Iași',
onMatch: (m) => '<mark>${m[0]}</mark>',
onNonMatch: escape,
));
}
Rezultat
<mark>Iași</mark> <capitala Moldovei> & <mark>Iași</mark>-ul vechi
Greșeli frecvente
- Te aștepți ca
splitMapJoinsă returneze o listă, casplit. Returnează un singur text, deja lipit.
Comenzi înrudite
String.split: Împarte textul în bucăți la fiecare apariție a separatorului și returnează o listă de texte.String.replaceAll: Înlocuiește toate aparițiile (replaceAll) sau doar prima (replaceFirst) unui text; replaceAllMapped calculează înlocuirea.RegExp: O expresie regulată: un model de text cu care cauți, verifici sau înlocuiești bucăți dintr-un text.