zwsz
Version:
转换混合的中英文,支持阿拉伯数字、中文数字、会计数字转换为数字。这个项目是[emp-script-static]https://github.com/gdx1231/emp-script-static的一部分,分出来作为独立项目使用。
8 lines (7 loc) • 3.15 kB
JavaScript
(function(m,l){"object"===typeof module&&"object"===typeof module.exports?module.exports=l():l(m)})("undefined"!==typeof window?window:this,function(m){function l(a){for(var e=[{number:0,scale:1,items:[]}],f=null,c=0;c<a.length;c++){var g=a[c],b=n[g],d=q[g];e[e.length-1].items.push([g,b,d]);if(b)0==c&&b.first?e[e.length-1].number=10:b.stop?(e[e.length-1].scale=b.value||1,e.push({number:0,scale:1,items:[]}),scale=1,f=null):(c==a.length-1&&(console.log(b),e[e.length-1].number.scale=b.value),f=b);else{if(null==
d)throw"\u975e\u6570\u5b57\u6216\u5355\u4f4d\uff1a"+g;g=c==a.length-1?null:a[c+1];var h=c==a.length-1?null:n[g];h&&h.stop&&(h=null);g=e[e.length-1].number;var k=e[e.length-1].items;b=k[k.length-2];k=k[k.length-3];null==h?null==f?(f=!1,b&&0===b[2]?k&&null!=k[1]&&(f=!0):b&&b[1]&&10===b[1].value&&(f=!0),d=f?g+d:10*g+d):d=b&&b[1]&&10===b[1].value&&(null==k||0===k[2]||null!=k[1])?g+d+10:g+d:d=g+d*h.value;e[e.length-1].number=d;f=null}}return e}function p(a){if(!a)return a;if(!isNaN(a.toString()))return 1*
a.toString();var e=a.replace(/\uff0c|,| |\u5143|\u5706/ig,"").replace(/\u70b9|\u3002/ig,".").split(".");if(2<e.length)throw"\u975e\u6570\u5b57\u8868\u8fbe\u5f0f\uff1a"+a;var f=e[0].split("");a=(2==e.length?e[1]:"").split("");e=!1;var c=f[0];t[c]?(e=!0,f=f.splice(1)):u[c]&&(e=!1,f=f.splice(1));c=f[f.length-1];r[c]?f=f.splice(0,f.length-1):1<a.length&&(c=a[a.length-1],r[c]&&(a=a.splice(0,a.length-1)));c=f;for(var g=f=0,b=c.length-1;0<=b;b-=2){var d=c[b];var h=q[c[b-1]];d=h?"\u89d2"==d?1*("0."+h):"\u5206"==
d?1*("0.0"+h):"\u5398"==d?1*("0.00"+h):"\u6beb"==d?1*("0.000"+h):-1:-1;if(-1===d)break;else f+=d,g++}c=c.splice(0,c.length-2*g);c=l(c);g=0;b=1;for(d=c.length-1;0<=d;d--){h=c[d];var k=h.number;b*=h.scale;g+=k*b}f=g+f;if(0<a.length){c=1;g=0;for(b=a.length-1;0<=b;b--){d=n[a[b]];if(!d)break;c*=d.value;g++}a=1==c?a:a.splice(0,a.length-g);g=l(a);b=0;d=1;for(h=g.length-1;0<=h;h--){k=g[h];var v=k.number;d*=k.scale;b+=v*d}a=[1*("0."+b),c,a.length]}else a=0;return 0==a?f*(e?-1:1):((f+a[0])*a[1]).toFixed(0>
a[2]?0:a[2])*(e?-1:1)}var q={"\u96f6":0,0:0,"\uff10":0,o:0,O:0,"\u4e00":1,"\u58f9":1,1:1,"\uff11":1,"\u4e8c":2,"\u8d30":2,2:2,"\uff12":2,"\u4e24":2,"\u4fe9":2,"\u4e09":3,"\u53c1":3,3:3,"\uff13":3,"\u56db":4,"\u8086":4,4:4,"\uff14":4,"\u4e94":5,"\u4f0d":5,5:5,"\uff15":5,"\u516d":6,"\u9646":6,6:6,"\uff16":6,"\u4e03":7,"\u67d2":7,7:7,"\uff17":7,"\u516b":8,"\u634c":8,8:8,"\uff18":8,"\u4e5d":9,"\u7396":9,9:9,"\uff19":9},n={"\u5341":{value:10,first:!0},"\u62fe":{value:10,first:!0},"\u4ec0":{value:10,first:!0},
"\u767e":{value:100},"\u4f70":{value:100},"\u964c":{value:100},"\u5343":{value:1E3},"\u9621":{value:1E3},"\u4edf":{value:1E3},k:{value:1E3,stop:!0},K:{value:1E3,stop:!0},"\u4e07":{value:1E4,stop:!0},"\u842c":{value:1E4,stop:!0},w:{value:1E4,stop:!0},W:{value:1E4,stop:!0},M:{value:1E6,stop:!0},m:{value:1E6,stop:!0},"\u4ebf":{value:1E8,stop:!0},b:{value:1E9,stop:!0},B:{value:1E9,stop:!0}},t={"-":!0,"\u8d1f":!0,"\uff0d":!0},u={"+":!0,"\u6b63":!0},r={"\u6574":!0};if("undefined"!=typeof window&&window.EWA&&
window.EWA_Utils)window.EWA_Utils.chineseToNumber=p;else if(m)m.chineseToNumber=p;else return p});