Ce face String.substring
Pozițiile dintr-un text încep de la 0. text.substring(start, end) returnează textul de la poziția start (inclusiv) până la end (exclusiv): 'Timișoara'.substring(0, 4) este 'Timi'. Fără end, merge până la final.
Operatorul [] returnează caracterul de la o poziție, ca text de lungime 1: 'Iași'[0] este 'I'. Ultimul caracter este text[text.length - 1]. Dart nu are indici negativi.
Dacă pozițiile sunt în afara textului sau start > end, se aruncă RangeError. Ca la length, pozițiile sunt unități UTF-16: nu tăia un emoji la jumătate.
Parametri
| Parametru | Descriere |
|---|---|
start |
Poziția de început (inclusiv). |
end |
Poziția de sfârșit (exclusiv); implicit lungimea textului. |
index |
La []: poziția caracterului, de la 0 la length - 1. |
Ce returnează
Un String nou.
Exemple
Exemplul 1: Bucăți și caractere
void main() {
var oras = 'Timișoara';
print(oras.substring(0, 4));
print(oras.substring(4));
print(oras.substring(2, 5));
print(oras[0]);
print(oras[oras.length - 1]);
}
Rezultat
Timi
șoara
miș
T
a
Exemplul 2: Inițiale și CNP
Din CNP, prima cifră indică sexul și secolul, iar următoarele șase cifre sunt data nașterii (AALLZZ).
void main() {
var nume = 'Ana Maria Popescu';
var initiale = nume.split(' ').map((p) => p[0]).join();
print(initiale);
var cnp = '6040315223344';
var an = cnp.substring(1, 3);
var luna = cnp.substring(3, 5);
var zi = cnp.substring(5, 7);
print('Născută la $zi.$luna.20$an');
}
Rezultat
AMP
Născută la 15.03.2004
Exemplul 3: Poziție greșită
Prindem eroarea ca să vedem mesajul; într-un program real verifici lungimea înainte.
void main() {
var cod = 'RO12';
try {
print(cod.substring(2, 10));
} on RangeError catch (e) {
print('Eroare: ${e.message}, valoarea ${e.invalidValue}');
}
print(cod.substring(2, cod.length < 10 ? cod.length : 10));
}
Rezultat
Eroare: Invalid value, valoarea 10
12
Greșeli frecvente
- Crezi că al doilea argument este lungimea bucății. Este poziția de sfârșit:
substring(2, 5)dă 3 caractere. - Scrii
text[-1]pentru ultimul caracter, ca în Python. AruncăRangeError; foloseștetext[text.length - 1]. - Încerci să schimbi o literă cu
text[0] = 'A'. Textele sunt imutabile: construiește un text nou.
Comenzi înrudite
String.indexOf: Returnează poziția primei (indexOf) sau ultimei (lastIndexOf) apariții a unui text, sau -1 dacă lipsește.String.length: length dă numărul de unități UTF-16 ale textului; isEmpty și isNotEmpty spun dacă textul este gol.String.replaceRange: Înlocuiește bucata dintre două poziții cu alt text, fără să caute nimic.