check-and-format-number v0.0.2
This is DEAD - see format-number-with-string instead
#check-and-format-number To reformat a number using a format string '-£#,##0.##0 /m', '(33 years)', '$ -99.00'.
Checks that the number is a valid number. Based on the format string checks length and whether negative values permitted, pads with zeros/rounds and adds prefix and suffix characters
Format String Can Include:
- negative signs before or after prefix text
- brackets as negative signs
- prefix and suffix texts
.or,as decimal point- space or
.or,as thousand separators - space or
.or,as thousanths separators #,9or0as number place holders
Format Notes and Examples
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
'92332,4234','#,###'returns '92332,4234''92332.4234','#.###'returns '92332.4234'
If the character appears twice in the format string it is a separator
'92332,4234','#,###,###'returns '923,324,234''92332,4234','#.###.###'returns error - value must be an integer
When in doubt '.' in the format string is the decimal point, so
'92332,4234.45645','#.###,#'returns '923324234.456, 45 To create the same structure with decimalChar as ',', just add a '.' at start or end or extend expression eg.#.###,##.###,#.#.###.###,#
Padding
A 0 will pad to that position
'92332.42','## ##0.##0 ##'returns '92 332.420''.42','## ##0.##0 ##'returns '0.420'
Maximums
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' A0or9in the first integer position will limit the size'92332.42467','9 ##0.##0'returns 'error - number too large''
Negatives
'-2332.42343','(# ###.### #)'returns '(2 332.423 43)''-2332.42343','- # ###.### #)'returns '- 2 332.423 43''-2332.42343','# ###.### #-'returns '(2 332.423 43-)''-2332.42343','# ###.### #'returns 'error - must be positive'
Units/Prefix Text
Units can be before or after negative symbols.
Prefix text cannot contain number placeholder characters
'-23342456,2343278', '$(# ###.### #) per year' returns '$(23 342 456.234 327 8) per year'
'-23342456,2343278', '($# ###.### # per year)' returns '($23 342 456.234 327 8 per year)'
'-9,342,456.2353278', '$9 ### ##0.00# ###- per year' returns '$9 342 456.235 327 8- per year';
'-9,342,456.2353278', '-$9 ### ##0.00# ### per year' returns '-$9 342 456.235 327 8 per year';
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)