/* 工具包 */ 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; }); } }; |
使用方法:
1
2
3
|
< script > Utils.numberToChinese(30000) </ script > |