function cashToChinese(cash) {
var digits=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
var largeUnits=['元','万','亿'];
var units=['','拾','佰','仟'];
var fractions=['角','分'];
let cStr='';
cash=cash.toString();
if(cash===''||cash===undefined||cash===null){
return cStr;
}
let preCash=cash.split('.')[0]||'';
let lastCash=cash.split('.')[1]||'00';
if(preCash.length>12||lastCash.length>2){
return cStr;
}
//遍历小数位
for(let i=0;i<fractions.length;i++){
cStr+=(digits[lastCash.charAt(i)]+fractions[i]).replace(/零./,'');
}
cStr=cStr||'整';
//遍历整数位,用str来记录每4位的值
for(let i=preCash.length-1,n=0,str='';i>=0;i--){
let largeUnit='';
str=(digits[preCash[i]]+units[n%4])+str;
//用n计数每隔4位,或者遍历到头的时候加单位('元','万','亿')
if((n+1)%4===0||i===0){
largeUnit=largeUnits[Math.floor(n/4)];
//考虑替换末位全是0时替换位空 或者中间连续0时替换为零
str=str.replace(/(零.)*零$/g,'').replace(/(零.)+/g,'零');
str+=largeUnit;
cStr=str+cStr;
str='';
}
n++;
}
//考虑处理('元','万','亿')单位前为10的情况,和整数位为0的情况
return cStr.replace(/壹拾(.){0,1}([元|万|亿])/g,'拾$1$2').replace(/^元/,'');
}
|