js 正则转换阿拉伯数字为数字大写(原创)

628 阅读1分钟

function convertCurrency(num){

var str = (num+'').replace(/[, ]/g,''), 
	getedStr = '',
	str2 = '',
	getedStr2 = '';
if(/\./.test(str)){
	str2 = str.split('.')[1].substr(0,2);
	str = str.split('.')[0];
}
var numStr = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
var keyStr = ['',"拾","佰","仟","万","亿"];
var keyStr2 = ['',"万","亿"];
var unitStr = ["角","分"];
getedStr = str.replace(/\d/g,function(){
	var num = arguments[0],ind = str.length - arguments[1] -1;
	var s = '';
	var a = parseInt(ind/4),b = ind%4;
	switch(b){
		case 0:
			num == 0 ? s = numStr[num] : s = numStr[num] + keyStr2[a];
			break;
		case 1:
		case 2:
		case 3:
			num == 0 ? s = numStr[num] : s = numStr[num]+keyStr[b];
			break;
	}
	return s;
})	
getedStr2 = str2.replace(/\d/g,function(){
	var num = arguments[0],ind = arguments[1];
	return numStr[num]+unitStr[ind];
})	
return (getedStr + '元' + getedStr2).replace(/零+/,'零');

}

下边这个是网上的 拿过来参考一下

function moneyUnit(n){

    m *= 100;
    m += "";
    var length = m.length;
    var unit = ["仟", "佰", "拾", "", "仟", "佰", "拾", "", "角", "分"];
    var toDx = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
    var result = "";
    for (var i = 0; i < length; i++) {
        if (i == 2) {
            result = "元" + result;
        } else if (i == 6) {
            result = "万" + result;
        }
        if (m.charAt(length - i - 1) == 0) {
            if (i != 0 && i != 1) {
                if (result.charAt(0) != '零' && result.charAt(0) != '元' && result.charAt(0) != '万') {
                    result = "零" + result;
                }
            }
            continue;
        }
        result = toDx[m.charAt(length - i - 1)] + unit[unit.length - i - 1] + result;
    }
    result += result.charAt(result.length - 1) == '元' ? "整" : "";

}