Wie analysiere ich mit Dart einen String in eine Zahl?


104

Ich möchte Zeichenfolgen wie "1" oder "32.23" in Ganzzahlen und Doppelte analysieren. Wie kann ich das mit Dart machen?

Antworten:


172

Sie können eine Zeichenfolge in eine Ganzzahl mit analysieren int.parse(). Beispielsweise:

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

Beachten Sie, dass Zeichenfolgen mit Präfix int.parse()akzeptiert werden 0x. Andernfalls wird die Eingabe als Basis-10 behandelt.

Sie können eine Zeichenfolge mit in ein Double analysieren double.parse(). Beispielsweise:

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

parse() löst FormatException aus, wenn die Eingabe nicht analysiert werden kann.


85

In Dart 2 ist int.tryParse verfügbar.

Es gibt null für ungültige Eingaben zurück, anstatt zu werfen. Sie können es so verwenden:

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

4

Gemäß Pfeil 2.6

Der optionale onErrorParameter von int.parseist veraltet . Daher sollten Sie int.tryParsestattdessen verwenden.

Hinweis : Gleiches gilt für double.parse. Verwenden Sie daher double.tryParsestattdessen.

  /**
   * ...
   *
   * 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)});

Der Unterschied besteht darin , dass die int.tryParseRenditen , nullwenn die Quellzeichenfolge ist ungültig.

  /**
   * 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});

In Ihrem Fall sollte es also so aussehen:

// 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 () und double.parse () können einen Fehler auslösen, wenn der String nicht analysiert werden konnte


2
int.parse()und double.parse()kann einen Fehler auslösen, wenn der String nicht analysiert werden konnte. Bitte erläutern Sie Ihre Antwort, damit andere Dart besser lernen und verstehen können.
Josxha

1
Danke, dass du es erwähnt hast josxha, ich bin ein absoluter Anfänger in Dart und ich versuche mein Bestes, um anderen zu helfen. Nun, ich dachte, es wäre sowieso die einfachste Antwort. Danke !!
Rajdeep12345678910
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.