数字金额转中文大写方法
在vue中这样写可以处理数字金额转中文大写的问题,注意中文大写是:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、 角、分、零、整
我们可以在methods里面写上转换方法
// 数字金额转中文大写方法
ToString(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)){
return "数据非法"; //判断数据是否大于0
}
var unit = "仟佰拾亿仟佰拾万仟佰拾元角分", str = "";
n += "00";
var indexpoint = n.indexOf('.'); // 如果是小数,截取小数点前面的位数
if (indexpoint >= 0){
n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2); // 若为小数,截取需要使用的unit单位
}
unit = unit.substr(unit.length - n.length); // 若为整数,截取需要使用的unit单位
for (var i=0; i < n.length; i++){
str += "零壹贰叁肆伍陆柒捌玖".charAt(n.charAt(i)) + unit.charAt(i); //遍历转化为大写的数字
}
return str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); // 替换掉数字里面的零字符,得到结果
}
然后再调用写的这个方法就可以了,也可以写成公用方法再进行调用。
// 数字金额转中文大写方法
let n = 6222211222222;
let numStr = this.ToString(n);
console.log(numStr );