programing

Dart를 사용하여 문자열을 숫자로 해석하려면 어떻게 해야 합니까?

i4 2023. 4. 16. 14:33
반응형

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

반응형