int.parse în Dart

Numere (int, double, num, BigInt) Dart 1.0 (tryParse: Dart 2.0)

Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.

Sintaxă
static int parse(String source, {int? radix})
static int? tryParse(String source, {int? radix})

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.parse pe un text cu zecimale ('9.50'): aruncă FormatException. Folosește double.parse sau num.parse.
  • Folosești int.parse pe 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âi null (?? '').

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ă).