javascript阿拉伯數字 轉 漢字中文數字

/*
     工具包
*/
var  Utils={
     /*
         單位
     */
     units: '個十百千萬@#%億^&~' ,
     /*
         字符
     */
     chars: '零一二三四五六七八九' ,
     /*
         數字轉中文
         @number {Integer} 形如123的數字
         @return {String} 返回轉換成的形如 一百二十三 的字符串            
     */
     numberToChinese: function (number){
         var  a=(number+ '' ).split( '' ),s=[],t= this ;
         if (a.length>12){
             throw  new  Error( 'too big' );
         } else {
             for ( var  i=0,j=a.length-1;i<=j;i++){
                 if (j==1||j==5||j==9){ //兩位數 處理特殊的 1*
                     if (i==0){
                         if (a[i]!= '1' )s.push(t.chars.charAt(a[i]));
                     } else {
                         s.push(t.chars.charAt(a[i]));
                     }
                 } else {
                     s.push(t.chars.charAt(a[i]));
                 }
                 if (i!=j){
                     s.push(t.units.charAt(j-i));
                 }
             }
         }
         //return s;
         return  s.join( '' ).replace(/零([十百千萬億@ #%^&~])/g,function(m,d,b){//優先處理 零百 零千 等
             b=t.units.indexOf(d);
             if (b!=-1){
                 if (d== '億' ) return  d;
                 if (d== '萬' ) return  d;
                 if (a[j-b]== '0' ) return  '零'
             }
             return  '' ;
         }).replace(/零+/g, '零' ).replace(/零([萬億])/g, function (m,b){ // 零百 零千處理後 可能出現 零零相連的 再處理結尾爲零的
             return  b;
         }).replace(/億[萬千百]/g, '億' ).replace(/[零]$/, '' ).replace(/[@ #%^&~]/g,function(m){
             return  { '@' : '十' , '#' : '百' , '%' : '千' , '^' : '十' , '&' : '百' , '~' : '千' }[m];
         }).replace(/([億萬])([一-九])/g, function (m,d,b,c){
             c=t.units.indexOf(d);
             if (c!=-1){
                 if (a[j-c]== '0' ) return  d+ '零' +b
             }
             return  m;
         });
     }
};

使用方法:javascript

1
2
3
< script >
Utils.numberToChinese(30000)
</ script >
相關文章
相關標籤/搜索