Làm cách nào để phân tích cú pháp một chuỗi thành một số với Dart?


105

Tôi muốn phân tích cú pháp các chuỗi như "1" hoặc "32,23" thành số nguyên và nhân đôi. Làm thế nào tôi có thể làm điều này với Dart?

Câu trả lời:


175

Bạn có thể phân tích cú pháp một chuỗi thành một số nguyên với int.parse(). Ví dụ:

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

Lưu ý rằng int.parse()chấp nhận các 0xchuỗi có tiền tố. Nếu không, đầu vào được coi là cơ số 10.

Bạn có thể phân tích cú pháp một chuỗi thành một chuỗi kép với double.parse(). Ví dụ:

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

parse() sẽ ném FormatException nếu nó không thể phân tích cú pháp đầu vào.


Làm thế nào bạn nên phân tích cú pháp một số nguyên từ một chuỗi có chứa các ký tự không hợp lệ sau này? Ví dụ: "-01: 00", nơi tôi muốn nhận -1 hoặc "172 quả táo", nơi tôi mong đợi nhận được 172. Trong JavaScript parseInt ("- 01:00") hoạt động tốt nhưng Dart báo lỗi. Có cách nào dễ dàng mà không cần kiểm tra từng ký tự theo cách thủ công không? Cảm ơn.
user1596274

86

Trong Dart 2 có sẵn int.tryParse .

Nó trả về null cho các đầu vào không hợp lệ thay vì ném. Bạn có thể sử dụng nó như thế này:

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

4

Theo phi tiêu 2,6

Các tùy chọn onErrortham số của int.parsebị phản đối . Do đó, bạn nên sử dụng int.tryParsethay thế.

Lưu ý : Điều tương tự cũng áp dụng cho double.parse. Do đó, hãy sử dụng double.tryParsethay thế.

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

Sự khác biệt là int.tryParsetrả về nullnếu chuỗi nguồn không hợp lệ.

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

Vì vậy, trong trường hợp của bạn, nó sẽ giống như sau:

// 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 ...
  //
}

3
 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 () và double.parse () có thể gặp lỗi khi không thể phân tích cú pháp chuỗi


2
int.parse()double.parse()có thể gặp lỗi khi nó không thể phân tích cú pháp Chuỗi. Vui lòng giải thích rõ hơn về câu trả lời của bạn để những người khác có thể học và hiểu rõ hơn về phi tiêu.
josxha

1
Cảm ơn bạn đã đề cập đến nó josxha, tôi là một người mới bắt đầu tuyệt đối trong Dart và tôi đang cố gắng hết sức để giúp đỡ những người khác, Chà, tôi nghĩ đó sẽ là câu trả lời đơn giản nhất, Cảm ơn !!
Rajdeep12345678910

0

bạn có thể phân tích cú pháp chuỗi với int.parse('your string value');.

Thí dụ:- int num = int.parse('110011'); print(num); \\ prints 110011 ;

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.