Bagaimana cara mengurai string menjadi angka dengan Dart?

108

Saya ingin mengurai string seperti "1" atau "32.23" menjadi bilangan bulat dan ganda. Bagaimana saya bisa melakukan ini dengan Dart?

Seth Ladd
sumber
selain dari jawaban di bawah ini jika string Anda memiliki huruf, Anda dapat melakukan seperti ini: stackoverflow.com/a/61401948/614026
temirbek

Jawaban:

178

Anda dapat mengurai string menjadi integer dengan int.parse(). Sebagai contoh:

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

Perhatikan bahwa int.parse()menerima 0xstring yang diawali. Jika tidak, masukan akan diperlakukan sebagai basis 10.

Anda dapat mengurai string menjadi ganda dengan double.parse(). Sebagai contoh:

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

parse() akan menampilkan FormatException jika tidak dapat mengurai input.

Seth Ladd
sumber
Bagaimana Anda mengurai integer dari string yang mengandung karakter tidak valid nanti? Misalnya, "-01: 00", di mana saya ingin mendapatkan -1, atau "172 apel" di mana saya berharap mendapatkan 172. Dalam JavaScript parseInt ("- 01:00") berfungsi dengan baik tetapi Dart memberikan kesalahan. Apakah ada cara mudah tanpa memeriksa karakter demi karakter secara manual? Terima kasih.
pengguna1596274
88

Di Dart 2 int.tryParse tersedia.

Ini mengembalikan null untuk input yang tidak valid alih-alih melempar. Anda bisa menggunakannya seperti ini:

int val = int.tryParse(text) ?? defaultValue;
kgiannakakis
sumber
4

Sesuai anak panah 2.6

onErrorParameter opsional dari int.parsesudah tidak digunakan lagi . Oleh karena itu, Anda harus menggunakan int.tryParsesebagai gantinya.

Catatan : Hal yang sama berlaku untuk double.parse. Oleh karena itu, gunakan double.tryParsesaja.

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

Perbedaannya adalah yang int.tryParsemengembalikan nulljika string sumber tidak valid.

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

Jadi, dalam kasus Anda akan terlihat seperti ini:

// 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 ...
  //
}
Ilker Cat
sumber
4
 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 () dan double.parse () bisa membuat kesalahan saat tidak bisa mengurai String

Rajdeep12345678910
sumber
2
int.parse()dan double.parse()dapat menimbulkan kesalahan jika String tidak dapat diurai. Harap uraikan jawaban Anda agar orang lain dapat belajar dan memahami dart dengan lebih baik.
josxha
1
Terima kasih telah menyebutkannya josxha, saya benar-benar pemula di Dart dan saya mencoba yang terbaik untuk membantu orang lain, Yah, saya pikir itu akan menjadi jawaban yang paling sederhana, terima kasih !!
Rajdeep12345678910
1

Anda dapat mengurai string dengan int.parse('your string value');.

Contoh:- int num = int.parse('110011'); print(num); \\ prints 110011 ;

Rajni Gujarati
sumber