版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://cloud.tencent.com/developer/article/1538541
let money=1314520
const moneyTransfer=(money)=>{
/*
* 先将传入值进行一次转换,确保是传入是数字
* 不知道 parseFloat 是咋用的,看下面第一张图片,虽然我也经常忘记,哎,
*/
let num = parseFloat(money);
/*
* 然后将写出当前单位,就是个十佰仟那些
*/
let strOutput = '',
strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'
num += '00';
/*
* 有小数点的情况,并截取
*/
let intPos = num.indexOf('.');
if (intPos >= 0) {
num = num.substring(0, intPos) + num.substr(intPos + 1, 2);
}
strUnit = strUnit.substr(strUnit.length - num.length)
for (var i = 0; i < num.length; i++) {
strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1);
}
/*
* 最后返回相应的大写
*/
return strOutput
.replace(/零角零分$/, '整')
.replace(/零[仟佰拾]/g, '零')
.replace(/零{2,}/g, '零')
.replace(/零([亿|万])/g, '$1')
.replace(/零+元/, '元')
.replace(/亿零{0,3}万/, '亿')
.replace(/^元/, '零元');
}
完整代码如下
export const money = str => {
let num = parseFloat(str);
let strOutput = '',
strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分';
num += '00';
let intPos = num.indexOf('.');
if (intPos >= 0) {
num = num.substring(0, intPos) + num.substr(intPos + 1, 2);
}
strUnit = strUnit.substr(strUnit.length - num.length);
for (var i = 0; i < num.length; i++) {
strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1);
}
return strOutput
.replace(/零角零分$/, '整')
.replace(/零[仟佰拾]/g, '零')
.replace(/零{2,}/g, '零')
.replace(/零([亿|万])/g, '$1')
.replace(/零+元/, '元')
.replace(/亿零{0,3}万/, '亿')
.replace(/^元/, '零元');
};