1
またはのような文字列32.23
を整数と倍精度浮動小数点数に解析したいと思います。Dartでこれを行うにはどうすればよいですか?
8 に答える
文字列を。で整数に解析できますint.parse()
。例えば:
var myInt = int.parse('12345');
assert(myInt is int);
print(myInt); // 12345
プレフィックス付きの文字列をint.parse()
受け入れることに注意してください。0x
それ以外の場合、入力は10進数として扱われます。
文字列を。でdoubleに解析できますdouble.parse()
。例えば:
var myDouble = double.parse('123.45');
assert(myDouble is double);
print(myDouble); // 123.45
parse()
入力を解析できない場合、FormatExceptionをスローします。
Dart 2では、 int.tryParseが使用可能です。
スローする代わりに、無効な入力に対してnullを返します。次のように使用できます。
int val = int.tryParse(text) ?? defaultValue;
文字列をIntに変換する
var myInt = int.parse('12345');
assert(myInt is int);
print(myInt); // 12345
print(myInt.runtimeType);
文字列をDoubleに変換する
var myDouble = double.parse('123.45');
assert(myInt is double);
print(myDouble); // 123.45
print(myDouble.runtimeType);
DartPadの例
ダーツ2.6による
のオプションのonError
パラメータint.parse
は非推奨です。int.tryParse
したがって、代わりに使用する必要があります。
注:同じことが。にも当てはまりますdouble.parse
。したがって、double.tryParse
代わりに使用してください。
/**
* ...
*
* 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)});
違いは、ソース文字列が無効な場合にint.tryParse
返されることです。null
/**
* 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});
したがって、あなたの場合は次のようになります。
// 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 ...
//
}
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()およびdouble.parse()は、文字列を解析できなかった場合にエラーをスローする可能性があります
で文字列を解析できますint.parse('your string value');
。
例:-int num = int.parse('110011'); print(num); // prints 110011 ;
上記のソリューションは、次のString
ような場合には機能しません。
String str = '123 km';
したがって、私にとってすべての状況で機能する1行の答えは次のようになります。
int r = int.tryParse(str.replaceAll(RegExp(r'[^0-9]'), '')) ?? defaultValue;
or
int? r = int.tryParse(str.replaceAll(RegExp(r'[^0-9]'), ''));
ただし、以下の種類の文字列では機能しないことに注意してください
String problemString = 'I am a fraction 123.45';
String moreProblem = '20 and 30 is friend';
あらゆる種類で機能するdoubleを抽出する場合は、次を使用します。
double d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), '')) ?? defaultValue;
or
double? d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), ''));
これはで機能しますが、では機能しproblemString
ませんmoreProblem
。
String age = stdin.readLineSync()!; // first take the input from user in string form
int.parse(age); // then parse it to integer that's it