Ce face String.indexOf
indexOf(x) caută x de la stânga la dreapta și returnează poziția la care începe prima apariție. lastIndexOf(x) caută de la dreapta la stânga și returnează poziția ultimei apariții. Dacă textul nu este găsit, ambele returnează -1.
Al doilea parametru spune de unde începe căutarea. La indexOf căutarea merge înainte de la start, iar la lastIndexOf merge înapoi de la start. Așa poți găsi toate aparițiile, într-o buclă.
Rezultatul se folosește des cu substring: de exemplu, extensia unui fișier este tot ce urmează după ultimul punct.
Parametri
| Parametru | Descriere |
|---|---|
pattern |
Textul sau RegExp căutat. |
start |
Poziția de la care începe căutarea. |
Ce returnează
Un int: poziția sau -1.
Exemple
Exemplul 1: Prima și ultima apariție
void main() {
var text = 'Ana are mere, Ana are pere';
print(text.indexOf('Ana'));
print(text.lastIndexOf('Ana'));
print(text.indexOf('are', 5));
print(text.indexOf('prune'));
print(text.indexOf(RegExp(r'[,.]')));
}
Rezultat
0
14
18
-1
12
Exemplul 2: Numele și extensia unui fișier
void main() {
for (var f in ['raport.final.pdf', 'poza.jpg', 'README']) {
var punct = f.lastIndexOf('.');
if (punct == -1) {
print('$f: fără extensie');
} else {
print('$f: nume "${f.substring(0, punct)}", extensie "${f.substring(punct + 1)}"');
}
}
}
Rezultat
raport.final.pdf: nume "raport.final", extensie "pdf"
poza.jpg: nume "poza", extensie "jpg"
README: fără extensie
Exemplul 3: Toate aparițiile unui cuvânt
void main() {
var text = 'la Iași, de la Iași, spre Iași';
var pozitii = <int>[];
var i = text.indexOf('Iași');
while (i != -1) {
pozitii.add(i);
i = text.indexOf('Iași', i + 1);
}
print(pozitii);
}
Rezultat
[3, 15, 26]
Greșeli frecvente
- Verifici
if (text.indexOf(x) > 0). Pierzi cazul în carexeste chiar la început (poziția 0). Compară cu!= -1sau foloseștecontains.
Comenzi înrudite
String.contains: Verifică dacă textul conține o bucată (contains), începe cu ea (startsWith) sau se termină cu ea (endsWith).String.substring: substring extrage o bucată din text între două poziții; operatorul [] dă caracterul de la o poziție.RegExp.firstMatch: Caută prima potrivire a modelului în text și o returnează cu poziții și grupuri, sau null dacă nu există.