Newsgroup: it.comp.lang.javascript
Titolo: convertire cifre in lettere

Salute, mi chiedevo se esiste qualche scriptino per convertire dei
numeri scritti in cifra in numeri scritti in lettere.
Qualcuno ha una roba simile sottomano?
Thanks in advance
Regards
--
 ,---.
 |  -'  . ,-. ,-,-. ,-. . ,-. ,-.
 |  ,-' | ,-| | | | ,-| | |   ,-|
 `---|  ' `-^ ' ' ' `-^ ' `-' `-^
  ,-.|
  `-+'

FATTO!
Ci ho messo un pò, però ho fatto un bel lavoro, speriamo che prima o poi
serva anche a me.... dubito proprio :"(((
Lo script è composto di 2 funzioni: change3() e change().
Quella che và usata è change() vuole un argomento pari al numero da
convertire.
Questo arg. PUO' essere in formato string op number!
PERO' senza punti e/o virgole!
Nel caso venga inserito:
change("") op (0) (null) ("0") ("0000") ()
la funzione restituisce "zero"
In fine il numero DEVE essere <= 999999999999
cioè < di millemiliardi          credo che basti :))
FAMMI SAPERE....
<script>
var n0_19=new
Array("","uno","due","tre","quattro","cinque","sei","sette","otto","nove","d
ieci","undici","dodici","tredici","quattordici","quindici","sedici","diciase
tte","diciotto","diciannove");
var n101=new
Array("","","venti","trenta","quaranta","cinquanta","sessanta","settanta","o
ttanta","novanta","cento");
var n102=new
Array("","","vent","trent","quarant","cinquant","sessant","settant","ottant"
,"novant","cent");
var pto1=new Array("","mille","unmilione","unmiliardo");
var pto2=new Array("","mila","milioni","miliardi");
function change3(num)
{
 var str="";
 var zeri="";
 for(var i=0,max=3-num.length;i<max;++i)
  zeri+='0';
 num=zeri+num;
 if(num.charAt(0)!='0'){
  str+=(num.charAt(0)!='1')?n0_19[num.charAt(0)]:"";
  str+="cento";
 }
 if(num.charAt(1)!='0' && num.charAt(1)!='1'){
   if(num.charAt(2)=='1' || num.charAt(2)=='8')
    str+=n102[num.charAt(1)]+n0_19[num.charAt(2)];
   else
    str+=n101[num.charAt(1)]+n0_19[num.charAt(2)];
 }
 else
  str+=n0_19[eval(num.charAt(1)+num.charAt(2))];
 return str;
}
function change(num)
{
 if(typeof num=='undefined' || Number(num)==0)
  return "zero";
 if(typeof num=='number')
  num=String(num);
 var str="",i=num.length%3,j=Math.floor((num.length/3)),max=num.length;
 if(num.substr(0,i)=="1")
  str+=pto1[j];
 else{
  str+=change3(num.substr(0,i));
  if(Number(num.substr(0,i))!=0)
   str+=pto2[j];
 }
 for(--j;j>=0;--j,i+=3)
  if(num.substr(i,3)=="1")
   str+=pto1[j];
  else{
   str+=change3(num.substr(i,3));
   if(Number(num.substr(i,3))!=0)
    str+=pto2[j];
  }
 return str;
}
alert(change("26134000000"));
</script>

VERSIONE DEFINITIVA!
Ho corretto alcuni errori.
180 ora restituisce centottanta,
se volessi invece centoottanta
cambia n102[10] e metti "cento" (invece che "cent")
<script>
var n0_19=new
Array("","uno","due","tre","quattro","cinque","sei","sette","otto","nove","d
ieci","undici","dodici","tredici","quattordici","quindici","sedici","diciase
tte","diciotto","diciannove");
var n101=new
Array("","","venti","trenta","quaranta","cinquanta","sessanta","settanta","o
ttanta","novanta","cento");
var n102=new
Array("","","vent","trent","quarant","cinquant","sessant","settant","ottant"
,"novant","cent");
var pto1=new Array("","","mille","unmilione","unmiliardo");
var pto2=new Array("","","mila","milioni","miliardi");
function change3(num)
{
 var str="",zeri="";
 for(var i=0,max=3-num.length;i<max;++i)
  zeri+='0';
 num=zeri+num;
 if(num.charAt(0)!='0'){
  str+=(num.charAt(0)!='1')?n0_19[num.charAt(0)]:"";
  str+=(num.charAt(1)=='8')?n102[10]:n101[10];
 }
 if(num.charAt(1)!='0' && num.charAt(1)!='1'){
   if(num.charAt(2)=='1' || num.charAt(2)=='8')
    str+=n102[num.charAt(1)]+n0_19[num.charAt(2)];
   else
    str+=n101[num.charAt(1)]+n0_19[num.charAt(2)];
 }
 else
  str+=n0_19[eval(num.charAt(1)+num.charAt(2))];
 return str;
}
function change(num)
{
 if(typeof num=='undefined' || Number(num)==0)
  return "zero";
 if(typeof num=='number')
  num=String(num);
 var str="",i=((num.length%3)!=0)?num.length%3:3,j=Math.ceil(num.length/3);
 if(num.substr(0,i)=="1")
  str+=(num.length>1)?pto1[j]:n0_19[j];
 else{
  str+=change3(num.substr(0,i));
  if(Number(num.substr(0,i))!=0)
   str+=pto2[j];
 }
 for(--j;j;--j,i+=3)
  if(num.substr(i,3)=="1")
   str+=pto1[j];
  else{
   str+=change3(num.substr(i,3));
   if(Number(num.substr(i,3))!=0)
    str+=pto2[j];
  }
 return str;
}
</script>

 ....cut...
Nessun problema a metterlo on-line fra gli StaffScripts, pero':
- prepara una pagina d'esempio (per il link "Prova");
- fammi un testo (RTF please!) in cui descrivi il funzionamento
  dello script (v. le altre schede);
- mandami un minimo di info personali (profilo) per la pagina
 
http://www.jsdir.com/staff/collaboratori.asp
Al resto ci penso io, e grazie in anticipo :-)
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .

 Al resto ci penso io, e grazie in anticipo :-)
Grazie a te

Poi ti spedisco il tutto in privato
No perche' in privato?? :)
Vai Gianni deliziaci!
PS: Grazie mille ancora


 No perche' in privato?? :)
Perche' me lo controllo, preparo l'archivio da scaricare, impagino la 
scheda e poi lo rendo pubblico nel sito :-)


 scheda e poi lo rendo pubblico nel sito :-)
Ho fatto, per curiosità quanto ci vorrà?

 Ho fatto, per curiosità quanto ci vorrà?
Domani ho gente a pranzo e la Signora già da oggi mi ha assegnato i 
primi "lavoretti" per rendere la casa presentabile... che 
inevitabilmente iniziano dal mio studio... insomma e' da stamattina che 
sposto carte e pulisco dai peli dei (3) gatti di casa :-)
Cmq lo mando su lunedi' sera/martedi mattina salvo imprevisti.


 due o tre spinte e ci siamo ;-D
Ma cosa stai fumando ultimamente? :-))))


 Ma cosa stai fumando ultimamente? :-))))
Non lo so ma dev'essere ottima... LOL! effa' gira' sta robbaa!! :P
-- 
Have a nice day. Ro!
http://www.Risorse.net

 PS: Grazie mille ancora
Beh, di fare una cosa del genere non mi sarebbe mai passata per la mente,
quindi parte del merito č della tua richiesta e come vedrai l'ho detto nella
spiegazione (mantenendo il tuo anonimato).
Ora devi togliermi una curiositŕ, ma a cosa ti serve questo script???
Ti vengono in mente altri possibili utilizzi???
Giusto per illudermi che ho fatto una cosa che almeno 2 in Italia possano
scaricarsi e usare.....

 scaricarsi e usare.....
Per esempio potrebbe servirgli per presentare un contratto in cui sia 
richiesta la cifra anche in lettere... o per degli assegni... o delle 
cambiali :-)))


 cambiali :-)))
Ci avevo pensato, infatti eventualmente nalla v1.3 ci inseriamo un altro
paio di paramentri per la valuta e il suo posizionamento, però non capisco
perchè in JS. Visto che non c'entra con Interrnet. Forse perchè è un
linguaggio che non và compilato ed è relativamente semplice per programmini
come questo....?
L'hai ricevuta la versione 1.2?

Ti vengono in mente altri possibili utilizzi???
Sinceramente non lo so.... me l'ha chiesto un mio collega.... credo lo
debba usare per la compilazione automatica di un modulo che stampa
delle multe.... sia in cifra che in lettere..... na roba del
genere..... cmq gli chiedo di metterti nel copyright? ;)


 roll(over)ata, non fare complimenti :-) 
Manda pure... anche il fiammifero cosi' la fai usabile e accessibile :-)


 L'hai ricevuta la versione 1.2?
Yea! E' on-line da pochi minuti.
Posso pubblicare il tuo indirizzo e-mail (quello che vedo qui nel NG) 
come riferimento per richieste di aiuto?


usa questo
giann...@katamail.com
che è quello con cui ti ho spedito le varie cose