js中,把數字“123”轉“一百二十三”,這種阿拉伯數字轉中文數字
在網上看到有一種轉換方案,使用起來比較容易,特記錄一下
參考博客: https://blog.csdn.net/qq_34731574/article/details/71194273
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;
});
}
};
//調用時
Utils.numberToChinese(123) //結果爲一百二十三