UNPKG

number-reads-cn

Version:

数字中文读法转换工具(电话读法、数值读法、序列读法、金额读法、大写读法)

45 lines (40 loc) 1.48 kB
const numberToChineseValue = (numStr) => { const num = Number(numStr) if (isNaN(num)) return numStr const digitToChinese = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'] const unit = ['', '十', '百', '千'] const sectionUnit = ['', '万', '亿', '兆'] const toSection = (sectionNum) => { let str = '' let zero = true const sectionArr = sectionNum.split('').reverse() for (let i = 0; i < sectionArr.length; i++) { const n = parseInt(sectionArr[i]) if (n === 0) { if (!zero) { zero = true str = digitToChinese[0] + str } } else { zero = false str = digitToChinese[n] + unit[i] + str } } return str.replace(/零+$/g, '') } const numArr = numStr.split('').reverse().join('').match(/.{1,4}/g) || [] let result = '' for (let i = 0; i < numArr.length; i++) { const section = toSection(numArr[i].split('').reverse().join('')) if (section !== '') { result = section + sectionUnit[i] + result } else { if (!result.startsWith('零')) result = '零' + result } } result = result.replace(/^一十/, '十') result = result.replace(/零+/g, '零') result = result.replace(/零+$/g, '') return result } console.log(numberToChineseValue('18069788533'))