format-number-with-string
v0.0.2
Published
Format a number based on a format string '-£#,##0.##0'
Downloads
50,100
Maintainers
Readme
format-number-with-string
Expects a valid number in 'computer' format and a format string (eg '-£#,###,##0.000 /m', '(## years)') which is used to format the number.
Basically a wrapper that uses deconstruct-format-string to deconstruct the format and then passes the results to format-number to do the formatting
The number
Can be a number or a string of a number
Format String Can Include:
- negative signs before or after prefix text or before or after suffix text
- brackets as negative signs before/after prefix/suffix
- prefix and suffix texts
.
or,
as decimal point- space or
.
or,
as thousand separators - space or
.
or,
as thousanths separators #
,9
or0
as number place holders If the format string is undefined or an empty string then defaults are used (see format-number)
Use
var format = require('format-number-with-string');
var overrideOptions = {noUnits: true, noSeparator: true};
var output1 = format(3345.23, '-£#,###,###.00');
var output2 = format(3345.23, '-£#,###,###.00', overrideOptions);
Format Notes and Examples
Padding
A 0
will pad to that position
92332.42,'## ##0.##0 ##'
returns '92 332.420''.42','## ##0.##0 ##'
returns '0.420'33, '00000'
returns '00033'
Rounding
A 0
or 9
in the last decimal space will cause rounding to that number of places
'92332.42467','## ##0.##0'
returns '92 332.425'
Negatives
WARNING - omitting a negative from the format string will return the absolute value
'-332.42','(###.###)'
returns '(332.42)''-332.42','- ###.###'
returns '- 332.42''-332.42','###.###-'
returns '332.42-''-332.42','###.###'
returns '332.42'
Decimal points/thousands separators in the format string:
If a format ends in a . or , then this will be taken as the decimal character UNLESS the same character is used elsewhere so:
'923324234','#,###.'
returns '923,324,234''923324234','#.###,'
returns '923.324.234'
If a format only has one of ',' or '.' and the character only appears once it is taken as the decimal point
'2332.42','#,###'
returns '2332,42''2332.42','#.###'
returns '2332.42'
If the character appears twice in the format string it is a separator
'923324234','#,###,###'
returns '923,324,234'
When in doubt '.' in the format string is the decimal point, so
'234.45645','#.###,#'
returns '234.456,45' To create a similar structure with decimalChar as ',', just add a '.' at start or end or extend expression eg.#.###,#
#.###,#.
#.###.###,#
Units/Prefix Text
Units can be before or after negative symbols.
Prefix text cannot contain number placeholder characters
'-233278', '($# ###.### # per year)'
returns '($233 278 per year)'
'-233278', '$# ##0.00# #- per year'
returns '$233 278- per year';
'-456.23', '-$# ##0.00# # per year'
returns '-$456.23 per year';
Override Options
As used in format-number
noUnits
boolean: if true will override and leave out prefix and suffix; default= falsenoSeparator
- boolean: if true will override both integer and decimals separator and leave them out
Does not work for:
- structured reference numbers, eg 9999-9999
- ignores and removes leading and trailing spaces (but retains those between pre/post fix and negative symbols etc)