Jump to content

Currency to text


saml

Recommended Posts

A quick google search found this script for writing out whole numbers. I'm sure it could be modified to split a dollar value into dollars and cents, run each through the provided functions and then join them on the back end and add in the currency lingo.

 

Using the link Eric supplied and making a few modifications, you should be able to try something like this:

 

function d1(x) { // single digit terms
   switch(x) {
       case '0': n= ""; break;
       case '1': n= " One "; break;
       case '2': n= " Two "; break;
       case '3': n= " Three "; break;
       case '4': n= " Four "; break;
       case '5': n= " Five "; break;
       case '6': n= " Six "; break;
       case '7': n= " Seven "; break;
       case '8': n= " Eight "; break;
       case '9': n= " Nine "; break;
       default: n = "Not a Number";
       }
   return n;
   }

function d2(x) { // 10x digit terms
   switch(x) {
       case '0': n= ""; break;
       case '1': n= ""; break;
       case '2': n= " Twenty "; break;
       case '3': n= " Thirty "; break;
       case '4': n= " Forty "; break;
       case '5': n= " Fifty "; break;
       case '6': n= " Sixty "; break;
       case '7': n= " Seventy "; break;
       case '8': n= " Eighty "; break;
       case '9': n= " Ninety "; break;
       default: n = "Not a Number";
       }
   return n;
   }

function d3(x) { // teen digit terms
   switch(x) {
       case '0': n= " Ten "; break;
       case '1': n= " Eleven "; break;
       case '2': n= " Twelve "; break;
       case '3': n= " Thirteen "; break;
       case '4': n= " Fourteen "; break;
       case '5': n= " Fifteen "; break;
       case '6': n= " Sixteen "; break;
       case '7': n= " Seventeen "; break;
       case '8': n= " Eighteen "; break;
       case '9': n= " Nineteen "; break;
       default: n=  "Not a Number";
       }
   return n;
   }

function convert(input) {
   var inputlength = input.length;
   var x = 0;
   var teen1 = "";
   var teen2 = "";
   var teen3 = "";
   var numName = "";
   var invalidNum = "";
   var a1 = ""; // for insertion of million, thousand, hundred 
   var a2 = "";
   var a3 = "";
   var a4 = "";
   var a5 = "";
   var digit = new Array(inputlength); // stores output
       for (i = 0; i < inputlength; i++)  {
       // puts digits into array
       digit[inputlength - i] = input.charAt(i)};
       var store = new Array(9); // store output

           for (i = 0; i < inputlength; i++) {
           x= inputlength - i;
           switch (x) { // assign text to each digit
           case x=9: d1(digit[x]); store[x] = n; break;
           case x=8: if (digit[x] == "1") {teen3 = "yes"}
                     else {teen3 = ""}; d2(digit[x]); store[x] = n; break;
           case x=7: if (teen3 == "yes") {teen3 = ""; d3(digit[x])}
                     else {d1(digit[x])}; store[x] = n; break;
           case x=6: d1(digit[x]); store[x] = n; break;
           case x=5: if (digit[x] == "1") {teen2 = "yes"}
                     else {teen2 = ""}; d2(digit[x]); store[x] = n; break;
           case x=4: if (teen2 == "yes") {teen2 = ""; d3(digit[x])}    
                     else {d1(digit[x])}; store[x] = n; break;
           case x=3: d1(digit[x]); store[x] = n; break;
           case x=2: if (digit[x] == "1") {teen1 = "yes"}
                     else {teen1 = ""}; d2(digit[x]); store[x] = n; break;
           case x=1: if (teen1 == "yes") {teen1 = "";d3(digit[x])}     
                     else {d1(digit[x])}; store[x] = n; break;
           }
               if (store[x] == "Not a Number"){invalidNum = "yes"};
                   switch (inputlength){
                   case 1:   store[2] = ""; 
                   case 2:   store[3] = ""; 
                   case 3:   store[4] = ""; 
                   case 4:   store[5] = "";
                   case 5:   store[6] = "";
                   case 6:   store[7] = "";
                   case 7:   store[8] = "";
                   case 8:   store[9] = "";
                   }
               if (store[9] != "") { a1 =" Hundred, "} else {a1 = ""};
               if ((store[9] != "")||(store[8] != "")||(store[7] != ""))
               { a2 =" Million, "} else {a2 = ""};
               if (store[6] != "") { a3 =" Hundred "} else {a3 = ""};
               if ((store[6] != "")||(store[5] != "")||(store[4] != ""))
               { a4 =" Thousand, "} else {a4 = ""};
               if (store[3] != "") { a5 =" Hundred "} else {a5 = ""};
               }

               // add up text, cancel if invalid input found
               if (invalidNum == "yes"){numName = "Invalid Input"}
               else {
               numName =  store[9] + a1 + store[8] + store[7] 
               + a2 + store[6] + a3 + store[5] + store[4] 
               + a4 + store[3] + a5 + store[2] + store[1];
               }
               store[1] = ""; store[2] = ""; store[3] = ""; 
               store[4] = ""; store[5] = ""; store[6] = "";
               store[7] = ""; store[8] = ""; store[9] = "";
               if (numName == ""){numName = "Zero"};
               textver = numName;
               return textver;
               }

// number to convert to string
var n = "$100.00";
var dollar = n.split(".")[0].replace(/\D/g,"");
var cents = n.split(".")[1];

return convert(dollar).replace(/\s+/g," ") + "dollars and" + convert(cents).replace("Zero"," no ").replace(/\s+/g," ") + "cents";

Link to comment
Share on other sites

Step thanks so much for the quick response, I'm not at work at this moment but will try it first thing in the morning. I apologize for what seems very simple for most on this forum but I do this a secondary function to my job, most of the time I get it but on the occasions I don't I rely on this forum.
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...