cnNumber扩展

This commit is contained in:
kuangshen04 2023-11-30 19:41:21 +08:00
parent 1d646c495d
commit 5a35c57878
1 changed files with 37 additions and 19 deletions

View File

@ -60981,29 +60981,47 @@ new Promise(resolve=>{
}, },
cnNumber:(num,two)=>{ cnNumber:(num,two)=>{
if(num==Infinity) return '∞'; if(num==Infinity) return '∞';
if(typeof num!='number'&&typeof num!='string') return num;
if(isNaN(num)) return ''; if(isNaN(num)) return '';
if(typeof num!='number') return num; let numStr=num.toString();
if(num<0||num>99) return num; if(!/^\d+$/.test(numStr)) return num;
if(num<=10){
switch(num){ const chars = ['零','一','二','三','四','五','六','七','八','九'];
case 0:return ''; const units = ['','十','百','千'];
case 1:return '一';
case 2:return two?'二':'两'; if(numStr.length<=2){//两位数以下单独处理保证效率
case 3:return '三'; if(numStr.length==1) return two&&num==2?'两':chars[num];
case 4:return '四'; return (numStr[0]=='1'?'':chars[numStr[0]])+'十'+(numStr[1]=='0'?'':chars[numStr[1]]);
case 5:return '五'; }
case 6:return '六';
case 7:return '七'; numStr=numStr.replace(/(?=(\d{4})+$)/g,',').split(',').filter(Boolean);
case 8:return '八'; const handleZero=str=>str.replace(/零{2,}/g,'零').replace(/零+$/g,'');
case 9:return '九'; const _transform=str=>{
case 10:return '十'; if(str==='0000') return '零';
if(!two&&str==='2') return '两';
let result='';
for(let i=0;i<str.length;i++){
let char=chars[+str[i]];
const unitIndex=str.length-1-i;
let unit=units[unitIndex];
if(!two&&char==='二'&&unitIndex>1) char='两';
if(char==='零') unit='';
result+=char+unit;
} }
result=handleZero(result);
return result;
} }
if(num<20){ let result='';
return '十'+get.cnNumber(num-10,true); for(let i=0;i<numStr.length;i++){
const part=numStr[i];
let char=_transform(part);
const unitIndex=numStr.length-1-i;
let unit=unitIndex%2?'万':'亿'.repeat(unitIndex/2);
if(char==='零') unit='';
result+=char+unit;
} }
var x=Math.floor(num/10); result=handleZero(result);
return get.cnNumber(x,true)+'十'+(num>10*x?get.cnNumber(num-10*x,true):''); return result;
}, },
selectableButtons:sort=>{ selectableButtons:sort=>{
if(!_status.event.player) return[]; if(!_status.event.player) return[];