Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // num2word by JoeSimmons
- var num2word = (function () {
- 'use strict';
- var ones = {
- '0' : 'zero', '1' : 'one', '2' : 'two', '3' : 'three',
- '4' : 'four', '5' : 'five', '6' : 'six', '7' : 'seven',
- '8' : 'eight', '9' : 'nine'
- },
- _10_19 = {
- '10' : 'ten', '11' : 'eleven', '12' : 'twelve', '13' : 'thirteen',
- '14' : 'fourteen', '15' : 'fifteen', '16' : 'sixteen',
- '17' : 'seventeen', '18' : 'eighteen', '19' : 'nineteen'
- },
- tens = {
- '2' : 'twenty', '3' : 'thirty', '4' : 'forty', '5' : 'fifty',
- '6' : 'sixty', '7' : 'seventy', '8' : 'eighty', '9' : 'ninety'
- };
- return function (num) {
- var word = '', char0, nstr, rest;
- if ( isNaN( parseInt(num, 10) ) ) { return '(error - invalid argument)'; }
- nstr = (num + '').split('.')[0].replace(/^0+(\d+)/, '$1'); // format the number and make it a string
- num = parseInt(nstr, 10); // get a number, even if it's a string
- rest = nstr.substring(1); // cache the characters past the first to be used later
- char0 = nstr.charAt(0); // make an array of characters
- if (num < 10) { // 0 - 9
- word = ones[char0];
- } else if (num < 20) { // 10 - 19
- word = _10_19[nstr];
- } else if (num < 100) { // 20 - 99
- word = tens[char0] + '-' + num2word(rest);
- } else if (num < 1000) { // 100 - 999
- word = ones[char0] + ' hundred ' + num2word(rest);
- } else if (num < 1000000) { // 1,000 - 999,999
- word = num2word( nstr.slice(0, -3) ) + ' thousand ' + num2word( nstr.slice(-3) );
- } else {
- return '(error - number too large)';
- }
- return word.replace(/[ -]zero/g, '');
- };
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement