Javascript将数字转化成为货币格式字符串
这里第一个方法是用JavaScript将数字number转换为货币字符串的格式(参数:保留小数位数,货币符号,整数部分千位分隔符,小数分隔符)
这里第二个方法是用简单的正则表达式将货币字符换转换为纯净的数字字符串,之后便可以将字符串转换为数字number
JavaScriptMoneyFormat(用prototype对Number进行扩展)
//ExtendthedefaultNumberobjectwithaformatMoney()method:
//usage:someVar.formatMoney(decimalPlaces,symbol,thousandsSeparator,decimalSeparator)
//defaults:(2,"$",",",".")
Number.prototype.formatMoney=function(places,symbol,thousand,decimal){
places=!isNaN(places=Math.abs(places))?places:2;
symbol=symbol!==undefined?symbol:"$";
thousand=thousand||",";
decimal=decimal||".";
varnumber=this,
negative=number<0?"-":"",
i=parseInt(number=Math.abs(+number||0).toFixed(places),10)+"",
j=(j=i.length)>3?j%3:0;
returnsymbol+negative+(j?i.substr(0,j)+thousand:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+thousand)+(places?decimal+Math.abs(number-i).toFixed(places).slice(2):"");
};
如下便是一些转换实例:
//Defaultusageandcustomprecision/symbol: varrevenue=12345678; alert(revenue.formatMoney());//$12,345,678.00 alert(revenue.formatMoney(0,"HK$"));//HK$12,345,678 //Europeanformatting: varprice=4999.99; alert(price.formatMoney(2,"",".",","));//4.999,99 //Itworksfornegativevalues,too: alert((-500000).formatMoney(0,"£"));//£-500,000
Currencytonumber–removingmoneyformatting(用正则表达式进行过滤)
varprice=(12345.99).formatMoney();//"$12,345.99" //Removenon-numericchars(exceptdecimalpoint/minussign): priceVal=parseFloat(price.replace(/[^0-9-.]/g,''));//12345.99
这个方法仅仅应用于小数分隔符为"."的模式,如果小数分隔符是","那么正则表达式为/[^0-9-,]/g
不用prototype对Number进行拓展的版本:
//Tosetitupasaglobalfunction:
functionformatMoney(number,places,symbol,thousand,decimal){
number=number||0;
places=!isNaN(places=Math.abs(places))?places:2;
symbol=symbol!==undefined?symbol:"$";
thousand=thousand||",";
decimal=decimal||".";
varnegative=number<0?"-":"",
i=parseInt(number=Math.abs(+number||0).toFixed(places),10)+"",
j=(j=i.length)>3?j%3:0;
returnsymbol+negative+(j?i.substr(0,j)+thousand:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+thousand)+(places?decimal+Math.abs(number-i).toFixed(places).slice(2):"");
}
//Tocreateitasalibrarymethod:
myLibrary.formatMoney=function(number,places,symbol,thousand,decimal){
/*asabove*/
}
//Exampleusage:
formatMoney(54321);//$54,321
myLibrary.formatMoney(12345,0,"£");//£12,345
以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript参考教程》、《JavaScript代码风格指南》,也希望大家多多支持毛票票。