今天碰到一个需求:js将数字转化为中文大写,那话不多说,直接上代码
numberToChineseUpper(num) {
const chineseNums = [
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖",
];
const units = ["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿"];
if (num === 0) return chineseNums[0];
let chineseStr = "";
let shouldAddZero = false;
num = String(num).split("").reverse().join("");
for (let i = 0; i < num.length; i++) {
let n = parseInt(num[i], 10);
if (n !== 0) shouldAddZero = false;
if (shouldAddZero && n === 0) continue;
chineseStr = chineseNums[n] + units[i] + chineseStr;
if (n !== 0 || i < num.length - 1) shouldAddZero = true;
}
chineseStr = chineseStr.replace(/零+/g, "零");
chineseStr = chineseStr.replace(/^零+/, "");
chineseStr = chineseStr.replace(/零+$/, "");
return chineseStr;
},