Comment analyser une chaîne en un nombre avec Dart?

105

Je voudrais analyser des chaînes comme "1" ou "32.23" en entiers et doubles. Comment puis-je faire cela avec Dart?

Seth Ladd
la source

Réponses:

175

Vous pouvez analyser une chaîne en un entier avec int.parse(). Par exemple:

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

Notez que int.parse()accepte les 0xchaînes préfixées. Sinon, l'entrée est traitée comme base-10.

Vous pouvez analyser une chaîne en un double avec double.parse(). Par exemple:

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

parse() lèvera FormatException s'il ne peut pas analyser l'entrée.

Seth Ladd
la source
Comment devez-vous analyser un entier d'une chaîne contenant des caractères non valides ultérieurement? Par exemple, "-01: 00", où je veux obtenir -1, ou "172 pommes" où je m'attendrais à en obtenir 172. En JavaScript, parseInt ("- 01:00") fonctionne très bien mais Dart donne une erreur. Existe-t-il un moyen simple de ne pas vérifier manuellement caractère par caractère? Merci.
user1596274
86

Dans Dart 2, int.tryParse est disponible.

Il renvoie null pour les entrées non valides au lieu de lancer. Vous pouvez l'utiliser comme ceci:

int val = int.tryParse(text) ?? defaultValue;
kgiannakakis
la source
4

Selon fléchette 2.6

Le onErrorparamètre facultatif de int.parseest obsolète . Par conséquent, vous devriez utiliser à la int.tryParseplace.

Remarque : la même chose s'applique à double.parse. Par conséquent, utilisez à la double.tryParseplace.

  /**
   * ...
   *
   * 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 différence est que int.tryParserenvoie nullsi la chaîne source n'est pas valide.

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

Donc, dans votre cas, cela devrait ressembler à:

// 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 ...
  //
}
Chat Ilker
la source
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 () et double.parse () peuvent générer une erreur lorsqu'il n'a pas pu analyser la chaîne

Rajdeep12345678910
la source
2
int.parse()et double.parse()peut générer une erreur lorsqu'il n'a pas pu analyser la chaîne. Veuillez préciser votre réponse afin que les autres puissent mieux apprendre et comprendre les fléchettes.
josxha le
1
Merci de l'avoir mentionné josxha, je suis un débutant absolu en Dart et je fais de mon mieux pour aider les autres, Eh bien, j'ai pensé que ce serait la réponse la plus simple, de toute façon Merci !!
Rajdeep12345678910
0

vous pouvez analyser la chaîne avec int.parse('your string value');.

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

Rajni Gujarati
la source