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?

Seth Ladd
quelle

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.

Seth Ladd
quelle
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;
kgiannakakis
quelle
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 ...
  //
}
Ilker Cat
quelle
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

Rajdeep12345678910
quelle
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