)
Parse source
as a, possibly signed, integer literal and return its value.
The source
must be a non-empty sequence of base-radix
digits,
optionally prefixed with a minus or plus sign ('-' or '+').
The radix
must be in the range 2..36. The digits used are
first the decimal digits 0..9, and then the letters 'a'..'z' with
values 10 through 35. Also accepts upper-case letters with the same
values as the lower-case ones.
If no radix
is given then it defaults to 10. In this case, the source
digits may also start with 0x
, in which case the number is interpreted
as a hexadecimal literal, which effectively means that the 0x
is ignored
and the radix is instead set to 16.
For any int n
and radix r
, it is guaranteed that
n == int.parse(n.toRadixString(r), radix: r)
.
If the source
is not a valid integer literal, optionally prefixed by a
sign, the onError
is called with the source
as argument, and its return
value is used instead. If no onError
is provided, a FormatException
is thrown.
The onError
handler can be chosen to return null
. This is preferable
to to throwing and then immediately catching the FormatException.
Example:
var value = int.parse(text, onError: (source) => null);
if (value == null) ... handle the problem
The onError
function is only invoked if source
is a String. It is
not invoked if the source
is, for example, null
.
Source
/**
* Parse [source] as a, possibly signed, integer literal and return its value.
*
* The [source] must be a non-empty sequence of base-[radix] digits,
* optionally prefixed with a minus or plus sign ('-' or '+').
*
* The [radix] must be in the range 2..36. The digits used are
* first the decimal digits 0..9, and then the letters 'a'..'z' with
* values 10 through 35. Also accepts upper-case letters with the same
* values as the lower-case ones.
*
* If no [radix] is given then it defaults to 10. In this case, the [source]
* digits may also start with `0x`, in which case the number is interpreted
* as a hexadecimal literal, which effectively means that the `0x` is ignored
* and the radix is instead set to 16.
*
* For any int [:n:] and radix [:r:], it is guaranteed that
* [:n == int.parse(n.toRadixString(r), radix: r):].
*
* If the [source] is not a valid integer literal, optionally prefixed by a
* sign, the [onError] is called with the [source] as argument, and its return
* value is used instead. If no [onError] is provided, a [FormatException]
* is thrown.
*
* The [onError] handler can be chosen to return `null`. This is preferable
* to to throwing and then immediately catching the [FormatException].
* Example:
*
* var value = int.parse(text, onError: (source) => null);
* if (value == null) ... handle the problem
*
* The [onError] function is only invoked if [source] is a [String]. It is
* not invoked if the [source] is, for example, `null`.
*/
external static int parse(String source,
{ int radix,
int onError(String source) });