Je voudrais analyser des chaînes de caractères comme 1
o 32.23
en nombres entiers et doubles. Comment puis-je faire cela avec Dart ?
Réponses
Trop de publicités?Les solutions ci-dessus ne fonctionneront pas pour String
comme :
String str = '123 km';
Donc, la réponse en une seule ligne, qui fonctionne dans toutes les situations pour moi sera :
int r = int.tryParse(str.replaceAll(RegExp(r'[^0-9]'), '')) ?? defaultValue;
or
int? r = int.tryParse(str.replaceAll(RegExp(r'[^0-9]'), ''));
Mais attention, cela ne fonctionnera pas pour les chaînes de caractères suivantes
String problemString = 'I am a fraction 123.45';
String moreProblem = '20 and 30 is friend';
Si vous voulez extraire le double qui fonctionnera dans tous les types, alors utilisez :
double d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), '')) ?? defaultValue;
or
double? d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), ''));
Cela fonctionnera pour problemString
mais pas pour moreProblem
.
Si vous ne savez pas si votre type est string ou int, vous pouvez faire comme ceci :
int parseInt(dynamic s){
if(s.runtimeType==String) return int.parse(s);
return s as int;
}
Pour le double :
double parseDouble(dynamic s){
if(s.runtimeType==String) return double.parse(s);
return s as double;
}
Vous pouvez donc faire parseInt('1') ou parseInt(1)
Vous pouvez le faire pour une conversion facile comme ceci
void main() {
var myInt = int.parse('12345');
var number = myInt.toInt();
print(number); // 12345
print(number.runtimeType); // int
var myDouble = double.parse('123.45');
var double_int = myDouble.toDouble();
print(double_int); // 123.45
print(double_int.runtimeType);
}
- Réponses précédentes
- Plus de réponses