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.