Dart를 사용하여 문자열을 숫자로 해석하려면 어떻게 해야 합니까?
다음과 같은 문자열을 해석하고 싶습니다.1
또는32.23
정수와 복수로 나뉩니다.다트한테 어떻게 이럴 수 있지?
문자열을 정수로 해석할 수 있습니다.int.parse()
. 예:
var myInt = int.parse('12345');
assert(myInt is int);
print(myInt); // 12345
주의:int.parse()
받아들이다0x
프리픽스 문자열그렇지 않으면 입력은 base-10으로 취급됩니다.
스트링을 더블로 해석할 수 있습니다.double.parse()
. 예:
var myDouble = double.parse('123.45');
assert(myDouble is double);
print(myDouble); // 123.45
parse()
는 입력을 해석할 수 없는 경우 Format Exception을 슬로우합니다.
Dart 2에서는 int.tryParse를 사용할 수 있습니다.
유효하지 않은 입력에 대해 null을 반환하는 대신 null을 반환합니다.다음과 같이 사용할 수 있습니다.
int val = int.tryParse(text) ?? defaultValue;
문자열을 Int로 변환
var myInt = int.parse('12345');
assert(myInt is int);
print(myInt); // 12345
print(myInt.runtimeType);
문자열을 이중으로 변환
var myDouble = double.parse('123.45');
assert(myInt is double);
print(myDouble); // 123.45
print(myDouble.runtimeType);
DartPad의 예
dart 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()가 문자열을 해석하지 못한 경우 오류가 발생할 수 있습니다.
위의 솔루션은 다음 경우에는 작동하지 않습니다.String
예를 들어 다음과 같습니다.
String str = '123 km';
즉, 모든 상황에서 한 줄에 해당하는 답변은 다음과 같습니다.
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 d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), '')) ?? defaultValue;
or
double? d = double.tryParse(str.replaceAll(RegExp(r'[^0-9\.]'), ''));
이것은 에 유효합니다.problemString
을 위해서가 아니다moreProblem
.
를 사용하여 문자열을 해석할 수 있습니다.int.parse('your string value');
.
예:-int num = int.parse('110011'); print(num); // prints 110011 ;
유형이 문자열인지 int인지 모를 경우 다음과 같이 수행할 수 있습니다.
int parseInt(dynamic s){
if(s.runtimeType==String) return int.parse(s);
return s as int;
}
더블의 경우:
double parseDouble(dynamic s){
if(s.runtimeType==String) return double.parse(s);
return s as double;
}
따라서 구문 분석을 수행할 수 있습니다.Int('1') 또는 parseInt(1)
void main(){
String myString ='111';
int data = int.parse(myString);
print(data);
}
String age = stdin.readLineSync()!; // first take the input from user in string form
int.parse(age); // then parse it to integer that's it
이렇게 쉽게 변환할 수 있습니다.
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);
}
언급URL : https://stackoverflow.com/questions/13167496/how-do-i-parse-a-string-into-a-number-with-dart
'programing' 카테고리의 다른 글
파일을 리셋하거나 특정 리비전으로 되돌리려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
django 엑셀 xlwt (0) | 2023.04.16 |
Xcode 4에서 NSZombieEnabled를 설정하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
Excel 문자열로 날짜 연결 (0) | 2023.04.16 |
비대화형으로 'psql' 비밀번호를 지정하려면 어떻게 해야 합니까? (0) | 2023.04.16 |