Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/08/2006, 16:27
Avatar de Cap.Buscapina
Cap.Buscapina
 
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
holas, me quedé con la espina sobre este codigo y entonces...

Cita:
<html>
<head>
<script>
var n1=new Array("x","uno","dos","tres","cuatro","cinco","sei s","siete","ocho","nueve");
var n2=new Array("","diez","veinte","treinta","cuarenta","sin cuenta","sesenta","setenta","ochenta","noventa")
var n3=new Array("","ciento","doscientos","trescientos","cuat rocientos","quinientos","seiscientos","setecientos ","ochocientos","novecientos");
var comodin=new Array("","once","doce","trece","catorce","quince", "dieciseis","diecisiete","dieciocho","diecinueve") ;
var leyenda="";
var proximo=false;

function convertir(n){
entero=parseInt(n).toString().split("").reverse();
decimal=(parseFloat(n)-parseInt(n)).toFixed(2)*100;
for(x=6;x>0;x--){
if(eval("entero["+(x-1)+"]")){
z=(x>3)?x-3:x;
if(z==2 && eval("entero["+(x-1)+"]")==1 && eval("entero["+(x-2)+"]")>0){
proximo=true;
}else{
if(proximo){
leyenda+=eval("comodin[entero["+(x-1)+"]]")
proximo=false;
}else{
leyenda+=eval("n"+z+"[entero["+(x-1)+"]]");
}
}
leyenda+=(x==2 || x==5)?" y ":" ";
leyenda+=(x==4)?" mil ":"";
leyenda=leyenda.replace("veinte y ","veinti");
leyenda=leyenda.replace("veintix","veinte");
leyenda=leyenda.replace(" y x ","");
leyenda=leyenda.replace(" "," ");
leyenda=leyenda.replace("os y","os ");
leyenda=leyenda.replace("uno mil","un mil");
leyenda=leyenda.replace("mil y","mil");
leyenda=leyenda.replace("ciento y","ciento");
leyenda=leyenda.replace("x ","");
leyenda=leyenda.replace("ciento mil","cien mil");
leyenda=leyenda.replace(/^[y ]/,"");
}
}
leyenda+=" con "+decimal+"/100 centavos";
document.forms[0]['txt'].value=leyenda;
leyenda="";
}
</script></head>
<body>
<form>
<input type="text" name="valor" onBlur="convertir(this.value)" value="638720.678">
<textarea cols="70" rows="2" name="txt"></textarea>
</form>
</body>
</html>
restaría probarlo bien (aunque ya lo probé con un bucle hasta 999999 y parece que funciona) y fijarse si las agrupaciones de los términos es correcta (no tengo claro si es veitiunmil o veitiun mil).

cualquier bug, avisen.

saludos
__________________
by Capitán Buscapina
.