Dart ile bir dizeyi sayıya nasıl ayrıştırırım?


Yanıtlar:


189

İle bir dizeyi tam sayıya ayrıştırabilirsiniz int.parse(). Örneğin:

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

Önekli dizeleri int.parse()kabul ettiğini unutmayın 0x. Aksi takdirde, giriş 10 baz olarak kabul edilir.

İle bir dizeyi çift olarak ayrıştırabilirsiniz double.parse(). Örneğin:

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

parse() girdiyi ayrıştıramazsa FormatException atacaktır.


Daha sonra geçersiz karakterler içeren bir dizeden bir tamsayıyı nasıl ayrıştırmalısınız? Örneğin, -1 almak istediğim yerde "-01: 00" veya 172 almayı beklediğim "172 elma". JavaScript'te parseInt ("- 01:00") gayet iyi çalışıyor ancak Dart bir hata veriyor. Tek tek elle kontrol etmenin kolay bir yolu var mı? Teşekkürler.
— user1596274

88

Dart 2'de int.tryParse mevcuttur.

Atmak yerine geçersiz girdiler için null döndürür. Bunu şu şekilde kullanabilirsiniz:

int val = int.tryParse(text) ?? defaultValue;

7
 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 () ve double.parse (), String'i ayrıştıramadığında bir hata atabilir


2
int.parse()ve double.parse()String'i ayrıştıramadığında bir hata atabilir. Başkalarının dartı daha iyi öğrenip anlayabilmesi için lütfen cevabınızı detaylandırın.
— josxha

1
Bundan bahsettiğiniz için teşekkür ederim josxha, ben Dart'ta tam bir acemiyim ve başkalarına yardım etmek için elimden gelenin en iyisini yapmaya çalışıyorum.
— Rajdeep12345678910

5

dizeyi ile ayrıştırabilirsiniz int.parse('your string value');.

Misal:- int num = int.parse('110011'); print(num); // prints 110011 ;


4

Dart 2.6'ya göre

İsteğe bağlı onErrorparametre int.parseolduğu kaldırıldı . Bu nedenle, int.tryParsebunun yerine kullanmalısınız .

Not : Aynısı için de geçerlidir double.parse. Bu nedenle, double.tryParsebunun yerine kullanın.

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

Aradaki fark, kaynak dizenin geçersiz olması durumunda int.tryParsedöndürülmesidir 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});

Yani, senin durumunda şöyle görünmeli:

// 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 ...
  //
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.