记录一个项目中用到的货币大写转换JS函数

经常在财务系统中显示数据的时候需要将数据转换为大写的方式,这里提供一种在JS下面实现的方式。

原理:

1.将数位与数值分开

var ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分";
var ls_num = "壹贰叁肆伍陆柒捌玖";

2.通过字符串从后向前截取,正向循环数值的字符串并递增数位,同时判断为0与不为0的情况,分别处理。为0的情况则处理数位之前是否加“零”,不为0的情况直接加上字符串数值。 

源代码:

String.prototype.trim = function(){return this.replace(/^/s+|/s+$/,'');} String.prototype.toChineseCurrencyString = function(iv) { var ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"; var ls_num = "壹贰叁肆伍陆柒捌玖"; var lmax = ls_bit.length; var ls_je, ls_dw, ls_result =""; var ll_len, i, k; iv = iv.toString(); var vFirstChar=iv.substr(0,1); if(vFirstChar=="-"){ vFirstChar="负"; iv=iv.substr(1,iv.length -1); }else{ vFirstChar=""; } var vPos=iv.indexOf("."); if((vPos>-1) && (iv.length -vPos -1)>2){ iv=iv.substr(0,vPos+3); }else if((vPos>-1) && (iv.length -vPos -1)==1){ iv=iv+"0"; }else if((vPos>-1) && (iv.length -vPos -1)==0){ iv=iv+"00"; }else if(vPos==-1){ iv=iv+".00"; } ls_je=iv; ll_len = ls_je.length; ls_je=ls_je.replace(".","") ll_len = ls_je.length; for(var i=ll_len;i>0;i--){ lmax =lmax-1; ls_dw =ls_bit.substr(lmax,1); k = parseInt(ls_je.substr(i-1,1)); if(k == 0){ switch(ls_dw){ case '元': if(ls_result==""){ ls_result = ls_dw + ls_result+"整"; }else{ ls_result = ls_dw + ls_result; } break; case '万': ls_result = ls_dw + ls_result; break; case '亿': ls_result = ls_dw + ls_result; break; case '分': ls_result = ''; break; case '角': if (ls_result != '') ls_result = '零' + ls_result; break; default: switch(ls_result.substr(0,1)){ case '万': break; case '亿': break; case '元': break; case '零': break; default: ls_result = '零' + ls_result; } } }else{ if(ls_result=="" && ls_dw=="元" ){ ls_result = ls_num.substr(k-1, 1 ) + ls_dw + ls_result+"整"; }else{ ls_result = ls_num.substr(k-1, 1 ) + ls_dw + ls_result; } } } return vFirstChar+ls_result; }

你可能感兴趣的:(function,财务系统)