131 lines
2.9 KiB
Markdown
131 lines
2.9 KiB
Markdown
|
## .numberParser( [options] ) ➜ function( value )
|
||
|
|
||
|
Return a function that parses a String representing a number according to the given options. If value is invalid, `NaN` is returned.
|
||
|
|
||
|
The returned function is invoked with one argument: the String representing a number `value` to be parsed.
|
||
|
|
||
|
### Parameters
|
||
|
|
||
|
#### options
|
||
|
|
||
|
See [.numberFormatter() options](./number-formatter.md#parameters).
|
||
|
|
||
|
#### value
|
||
|
|
||
|
String with number to be parsed, eg. `"3.14"`.
|
||
|
|
||
|
### Example
|
||
|
|
||
|
Prior to using any number methods, you must load `cldr/main/{locale}/numbers.json` and `cldr/supplemental/numberingSystems.json`. Read [CLDR content][] if you need more information.
|
||
|
|
||
|
[CLDR content]: ../../../README.md#2-cldr-content
|
||
|
|
||
|
You can use the static method `Globalize.numberParser()`, which uses the default locale.
|
||
|
|
||
|
```javascript
|
||
|
var parser;
|
||
|
|
||
|
Globalize.locale( "en" );
|
||
|
parser = Globalize.numberParser();
|
||
|
|
||
|
parser( "3.14" );
|
||
|
// > 3.14
|
||
|
```
|
||
|
|
||
|
You can use the instance method `.numberParser()`, which uses the instance locale.
|
||
|
|
||
|
```javascript
|
||
|
var enParser = Globalize( "en" ).numberParser(),
|
||
|
esParser = Globalize( "es" ).numberParser();
|
||
|
|
||
|
enParser( "3.14" );
|
||
|
// > 3.14
|
||
|
|
||
|
esParser( "3,14" );
|
||
|
// > 3.14
|
||
|
```
|
||
|
|
||
|
Some more examples.
|
||
|
|
||
|
```javascript
|
||
|
var enParser = Globalize( "en" ).numberParser();
|
||
|
|
||
|
enParser( "12,735" );
|
||
|
// > 12735
|
||
|
|
||
|
enParser( "12,735.00" );
|
||
|
// > 12735
|
||
|
|
||
|
Globalize( "en" ).numberParser({ style: "percent" })( "100%" );
|
||
|
// > 1
|
||
|
|
||
|
enParser( "∞" );
|
||
|
// > Infinity
|
||
|
|
||
|
enParser( "-3" );
|
||
|
// > -3
|
||
|
|
||
|
enParser( "-∞" );
|
||
|
// > -Infinity
|
||
|
|
||
|
enParser( "invalid-stuff" );
|
||
|
// > NaN
|
||
|
|
||
|
enParser( "invalid-stuff-that-includes-number-123" );
|
||
|
// > NaN
|
||
|
|
||
|
enParser( "invalid-stuff-123-that-includes-number" );
|
||
|
// > NaN
|
||
|
|
||
|
enParser( "123-invalid-stuff-that-includes-number" );
|
||
|
// > NaN
|
||
|
|
||
|
// Invalid decimal separator. (note `.` is used as decimal separator for English)
|
||
|
enParser( "3,14" );
|
||
|
// > NaN
|
||
|
|
||
|
// Invalid grouping separator position.
|
||
|
enParser( "127,35.00" );
|
||
|
// > NaN
|
||
|
```
|
||
|
|
||
|
Loose matching examples.
|
||
|
|
||
|
```js
|
||
|
var svParser = Globalize( "sv" ).numberParser();
|
||
|
|
||
|
// Swedish uses NO-BREAK-SPACE U+00A0 as grouping separator.
|
||
|
svParser( "1\xA0000,50" );
|
||
|
// > 1000.5
|
||
|
|
||
|
// The parser is lenient and accepts various space characters like regular space
|
||
|
// SPACE U+0020. Technically, it accepts any character of the Unicode general
|
||
|
// category [:Zs:].
|
||
|
svParser( "1 000,50" );
|
||
|
// > 1000.5
|
||
|
|
||
|
var fiParser = Globalize( "fi" ).numberParser();
|
||
|
|
||
|
// Finish uses MINUS SIGN U+2212 for the minus sign.
|
||
|
fiParser( "\u22123" );
|
||
|
// > -3
|
||
|
|
||
|
// The parser is lenient and accepts various hyphen characters like regular
|
||
|
// HYPHEN-MINUS U+002D. Technically, it accepts any character of the Unicode
|
||
|
// general category [:Dash:].
|
||
|
fiParser( "-3" );
|
||
|
// > -3
|
||
|
```
|
||
|
|
||
|
For improved performance on iterations, first create the parser. Then, reuse it
|
||
|
on each loop.
|
||
|
|
||
|
```javascript
|
||
|
var formattedNumbers = [ "1", "1", "2", "3", ... ];
|
||
|
var parser = Globalize( "en" ).numberParser();
|
||
|
|
||
|
numbers = formattedNumbers.map(function( formattedNumber ) {
|
||
|
return parser( formattedNumber );
|
||
|
});
|
||
|
```
|