P: ¿Cómo formateo un número con un separador de miles y uno de decimales? ¿Cómo vuelvo otra vez al formato original para operar?
R: He implementado unos cuantos métodos del objeto String para formatear un número con símbolos personalizados.
format formatea y
desFormat vuelve al estilo original.
Código:
<script language="Javascript">
String.prototype.reverse=function() { return this.split("").reverse().join(""); }
String.prototype.format=function(sepMil,sepDec) {
var partes=this.split("."); //dividimos parte entera de decimal
return partes[0].reverse().replace( /(\d{3})(?=\d)/g ,"$1"+sepMil).reverse() + (partes[1]?(sepDec + partes[1]):"");
}
String.prototype.desFormat=function(sepMil,sepDec) {
var reMil=new RegExp("\\"+sepMil,"g"); //para localizar los sepMil
var reDec=new RegExp("\\"+sepDec); //para localizar los sepDec
return this.replace(reMil,"").replace(reDec,".").replace(/\s/g,"");
}
var numeros=[123.41, 1234.001, 123456.00, 123, 12345, 12345678901];
</script>
<table border="1">
<script language="JavaScript">
for(var a in numeros) {
var n=numeros[a].toString();
var fn=n.format(".","'");
var dfn=fn.desFormat(".","'");
document.writeln("<tr><td>" + n + "</td><td>" + fn + "</td><td>" + dfn + "</td></tr>");
}
</script>
</table>
Recordad que son métodos para
String, ¡habremos de convetir los números a String con toString()!