function intToChinese(num) {
const arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const arr2 = ['','十', '百','千', '萬(wàn)','十','百', '千','億', '十', '百', '千', '萬(wàn)','十','百', '千','億' ];
if (!num || isNaN(num)) return '零';
const numStr = num.toString().split('');
let result = '';
for (let i = 0; i < numStr.length; i++) {
const des_i = numStr.length - 1 - i;
result = arr2[i] + result;
const arr1_index = numStr[des_i];
result = arr1[arr1_index] + result;
}
result = result.replace(/零(千|百|(zhì)十)/g, '零').replace(/十零/g, '十');
result = result.replace(/零+/g, '零');
result = result.replace(/零億/g, '億').replace(/零萬(wàn)/g, '萬(wàn)');
result = result.replace(/億萬(wàn)/g, '億');
result = result.replace(/零+$/, '');
result = result.replace(/^一十/g, '十');
return result;
}
函數(shù)先準(zhǔn)備了兩個(gè)數(shù)組献幔,對(duì)應(yīng)中文數(shù)字和單位煮寡,然后通過(guò)將具體整數(shù)轉(zhuǎn)成字符串虹蓄,字符串切割成字符數(shù)組。
通過(guò)循環(huán)來(lái)對(duì)每一個(gè)位進(jìn)行拼接幸撕。
然而拼接后的結(jié)果并不能直接使用薇组,因?yàn)榱?xí)慣的讀法會(huì)有一些既定的規(guī)則,因此需要通過(guò)replace方法對(duì)一些不符合習(xí)慣的情況進(jìn)行糾正杈帐。