Come si analizza una stringa in un numero con Dart?


105

Vorrei analizzare stringhe come "1" o "32.23" in numeri interi e doppi. Come posso farlo con Dart?

Risposte:


175

Puoi analizzare una stringa in un numero intero con int.parse(). Per esempio:

var myInt = int.parse('12345');
assert(myInt is int);
print(myInt); // 12345

Nota che int.parse()accetta 0xstringhe con prefisso. In caso contrario, l'input viene considerato come base 10.

Puoi analizzare una stringa in un doppio con double.parse(). Per esempio:

var myDouble = double.parse('123.45');
assert(myDouble is double);
print(myDouble); // 123.45

parse() genererà FormatException se non è in grado di analizzare l'input.


Come dovresti analizzare un numero intero da una stringa che contiene caratteri non validi in seguito? Ad esempio, "-01: 00", dove voglio ottenere -1, o "172 mele" dove mi aspetterei di ottenere 172. In JavaScript parseInt ("- 01:00") funziona bene ma Dart dà un errore. Esiste un modo semplice senza controllare manualmente carattere per carattere? Grazie.
user1596274

86

In Dart 2 è disponibile int.tryParse .

Restituisce null per input non validi invece di lanciare. Puoi usarlo in questo modo:

int val = int.tryParse(text) ?? defaultValue;

4

Come da dart 2.6

Il onErrorparametro facoltativo di int.parseè deprecato . Pertanto, dovresti usare int.tryParseinvece.

Nota : lo stesso vale per double.parse. Pertanto, usa double.tryParseinvece.

  /**
   * ...
   *
   * The [onError] parameter is deprecated and will be removed.
   * Instead of `int.parse(string, onError: (string) => ...)`,
   * you should use `int.tryParse(string) ?? (...)`.
   *
   * ...
   */
  external static int parse(String source, {int radix, @deprecated int onError(String source)});

La differenza è che int.tryParserestituisce nullse la stringa di origine non è valida.

  /**
   * Parse [source] as a, possibly signed, integer literal and return its value.
   *
   * Like [parse] except that this function returns `null` where a
   * similar call to [parse] would throw a [FormatException],
   * and the [source] must still not be `null`.
   */
  external static int tryParse(String source, {int radix});

Quindi, nel tuo caso dovrebbe apparire come:

// Valid source value
int parsedValue1 = int.tryParse('12345');
print(parsedValue1); // 12345

// Error handling
int parsedValue2 = int.tryParse('');
if (parsedValue2 == null) {
  print(parsedValue2); // null
  //
  // handle the error here ...
  //
}

3
 void main(){
  var x = "4";
  int number = int.parse(x);//STRING to INT

  var y = "4.6";
  double doubleNum = double.parse(y);//STRING to DOUBLE

  var z = 55;
  String myStr = z.toString();//INT to STRING
}

int.parse () e double.parse () possono generare un errore quando non sono in grado di analizzare la stringa


2
int.parse()e double.parse()può generare un errore quando non è in grado di analizzare la stringa. Per favore elabora la tua risposta in modo che gli altri possano imparare e capire meglio il dardo.
josxha

1
Grazie per averlo menzionato josxha, sono un principiante assoluto in Dart e sto facendo del mio meglio per aiutare gli altri, Beh, pensavo che sarebbe stata la risposta più semplice, comunque Grazie !!
Rajdeep12345678910

0

puoi analizzare la stringa con int.parse('your string value');.

Esempio:- int num = int.parse('110011'); print(num); \\ prints 110011 ;

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.