Ce face int.parse
Datele citite de la tastatură, din fișiere sau din formulare sunt texte. int.parse('42') le transformă în numărul 42. Spațiile de la început și de la final sunt ignorate, iar textul poate începe cu + sau -. Textul '0x1F' este citit ca hexazecimal.
Dacă textul nu este un întreg valid ('12a', '3.5', ''), int.parse aruncă o FormatException. int.tryParse face aceeași conversie, dar returnează null în loc de eroare, așa că o combini ușor cu ??: int.tryParse(text) ?? 0.
Parametrul numit radix alege baza, între 2 și 36: int.parse('1010', radix: 2) este 10, iar int.parse('ff', radix: 16) este 255.
Parametri
| Parametru | Descriere |
|---|---|
source |
Textul de transformat. |
radix |
Opțional: baza de numerație (2–36). Implicit 10, sau 16 dacă textul începe cu 0x. |
Ce returnează
parse: un int sau aruncă FormatException. tryParse: un int? (null dacă textul nu e valid).
Exemple
Exemplul 1: parse și tryParse
void main() {
print(int.parse('42'));
print(int.parse(' -7 '));
print(int.parse('0x1F'));
print(int.tryParse('12a'));
print(int.tryParse('3.5') ?? 0);
try {
int.parse('doi');
} on FormatException catch (e) {
print('Eroare: ${e.message}');
}
}
Rezultat
42
-7
31
null
0
Eroare: Invalid radix-10 number
Exemplul 2: Citirea unei vârste de la tastatură
stdin.readLineSync() dă un String?; tryParse ne lasă să tratăm simplu un răspuns greșit.
import 'dart:io';
void main() {
while (true) {
stdout.write('Vârsta: ');
var text = stdin.readLineSync() ?? '';
var varsta = int.tryParse(text);
if (varsta == null) {
print('„$text” nu este un număr. Încearcă din nou.');
continue;
}
print('Ai $varsta de ani.');
break;
}
}
Ce scrie utilizatorul (intrare)
doisprezece
21
Rezultat
Vârsta: „doisprezece” nu este un număr. Încearcă din nou.
Vârsta: Ai 21 de ani.
Exemplul 3: Alte baze de numerație
void main() {
print(int.parse('1010', radix: 2));
print(int.parse('ff', radix: 16));
print(int.parse('777', radix: 8));
print(int.tryParse('102', radix: 2));
}
Rezultat
10
255
511
null
Greșeli frecvente
- Folosești
int.parsepe un text cu zecimale ('9.50'): aruncăFormatException. Foloseștedouble.parsesaunum.parse. - Folosești
int.parsepe date de la utilizator fărătry. Un text greșit oprește programul; preferătryParse. - Treci un
String?direct:int.parse(stdin.readLineSync())nu compilează. Tratează întâinull(?? '').
Comenzi înrudite
double.parse: Transformă un text în număr cu zecimale; parse aruncă FormatException, tryParse returnează null.num.parse: Transformă un text în int sau double, după cum arată textul; tryParse returnează null la text greșit.int.toString: toString() transformă numărul în text; toStringAsFixed(n) îl scrie cu exact n zecimale.FormatException: Excepția aruncată când un text nu are formatul așteptat (int.parse(‘abc’), JSON greșit, dată invalidă).