UNPKG

number2chinesenumber

Version:

number to chinese number(阿拉伯数字转中文数字,支持大小写)

2 lines (1 loc) 2.84 kB
(function(m,h){typeof exports=="object"&&typeof module!="undefined"?h(exports):typeof define=="function"&&define.amd?define(["exports"],h):(m=typeof globalThis!="undefined"?globalThis:m||self,h(m.ChineseNumber={}))})(this,function(m){"use strict";const h=["零","一","二","三","四","五","六","七","八","九","十","百","千","万","亿","万亿"],p=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟","万","亿","万亿"],g=["角","分","厘","元"],A=a=>/^[-+]?\d{1,16}(\.\d+)?$/.test(a),S=(a,u="default")=>{const t=a.toString(),f=t.indexOf(".");if(f===-1)return"";let n=t.substring(f+1);n=n.replace(/0+$/,"");const r=u==="max"||u==="maxAmount"?p:h,e={simple(o){let s="";for(let l=0;l<o.length;l++)s+=r[Number(o[l])];return s},amount(o){let s="";for(let l=0;l<o.length;l++){const i=Number(o[l]);i===0&&!Number(o[l-1])||(s+=r[i],i!==0&&l<3&&(s+=g[l]))}return s}};return u==="amount"||u==="maxAmount"?e.amount(n):e.simple(n)},N=(a,u="default")=>{if(a>9999)return"";const t=u==="max"||u==="maxAmount"?p:h,f={ltHundred(n){if(n<=10)return t[n];const r=n/10|0,e=(r>1?t[r]:"")+t[10],o=n%10;return o===0?e:e+t[o]},ltThousand(n){let r=t[n/100|0]+t[11];const e=n%100;return e===0?r:e<10?r+t[0]+t[e]:e>=10&&e<20?(r+=t[1]+t[10],e>10&&(r+=t[e-10]),r):r+f.ltHundred(e)},ltTenThousand(n){let r=t[n/1e3|0]+t[12];const e=n%1e3;return e===0?r:e<10?r+t[0]+t[e]:e<20?(r+=t[0]+t[1]+t[10],e>10&&(r+=t[e-10]),r):e<100?r+t[0]+f.ltHundred(e):r+f.ltThousand(e)}};return a<100?f.ltHundred(a):a<1e3?f.ltThousand(a):f.ltTenThousand(a)},y=(a,u="default")=>{const t=a.toString();if(!A(t))return console.warn("The number format is error."),"";const f=t.split("."),n=Number(f[0].replace(/[+-]/g,"")),r=f[1]?f[1].substring(0,3):"",e=r?+("."+r):0;if(n===0&&e===0)return h[0];const o=u==="max"||u==="maxAmount"?p:h;let s="";const l={convertInteger(){let i=n.toString();const d=i.length;d<=4?i=i.padStart(4,"0"):d<=8?i=i.padStart(8,"0"):d<=12?i=i.padStart(12,"0"):i=i.padStart(16,"0");const O=i.split(/([0-9]{4})/).filter(x=>x!=="").reverse();let c="";return O.forEach((x,b,C)=>{const T=Number(x),v=N(T,u),D=Number(C[b-1]);if(!(!T&&!D)){if(T&&D&&(D<1e3||T%10===0)&&(c=o[0]+c),!T){c=v+c;return}b===1?c=o[13]+c:b===2?c=o[14]+c:b===3&&(c=o[15]+c),c=v+c}}),(u==="amount"||u==="maxAmount")&&(c+=g[3]),c},convertDecimal(){const i=S(e,u);if(u==="default"||u==="max"){s+="点"+i;return}let d="";if(u==="maxAmount"&&i.indexOf(g[1])===-1&&i.indexOf(g[2])===-1&&(d="整"),n===0){s=i+d;return}(i.indexOf(g[0])===-1||n%10===0)&&(s+=o[0]),s+=i+d}};return n!==0?s=l.convertInteger():s=o[0],t.indexOf("-")>-1&&(n!==0||e!==0)&&(s="负"+s),e===0?(u==="maxAmount"&&n&&(s+="整"),s):(l.convertDecimal(),s)};m.decimalToChineseNumber=S,m.default=y,m.ltTenThousand=N,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});