1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function changeZN(num){ const charList=[0, '壹', '贰', '叁', '肆','伍', '陆', '柒', '捌', '玖']; const lowUnitList= ['千','百','拾','']; let len =Math.ceil(num.length/8); let numSlice=num .padStart(len*8,0) .replace(/\B(?=(?:\d{8})+(?!\d))/g,",亿,") .split(",") .map(s=>( s .replace(/\B(?=(?:\d{4})+(?!\d))/,",万,") .split(",") .map((n)=>{ if(/^\d{4}$/.test(n)&&n!=="0000"){ return [].map.call(n,(c,i)=>{ return c==="0"?c:charList[c]+lowUnitList[i] }).join("") }else{ return n } }) )) .flat() .join("")+"元"; return (numSlice .replace(/^(0{4}['万亿元'])+$/,'零元') .replace(/(^(0+['万亿']?)+)|(0{4}['万'])/g,'') .replace(/0{1,4}(['万亿元'])/g,"$1") .replace(/0{1,3}/g,'零') ) }
|