angularJS数字转中文

HTML
<div>{{num}}</div>
<div>{{num2}}</div>
<div>---------------------------------------------------</div>
<div>{{str}}</div>
<div>{{str2}}</div>
JS
$scope.num = 20104050607040302050;
$scope.str = "3,245,400,300,245,675";
$scope.num2 = numberToChinese($scope.num);
$scope.str2 = numberToChinese($scope.str);
	
	
//判断是否为零
function isZero(str) {
	if(str[0] == "零"){
	   return true;
	}else{
	   return false;
	}
}
	
//清除千分位
function clearComma(s) {
	if ($.trim(s) == "") {
	   return s;
	} else {
	   return (s + "").replace(/[,]/g, "");
	}
}

//数字转中文
function numberToChinese(num) {
	var backOrder = [];//倒序中文数字数组
	var posOrder = [];//正序中文数字数组
	var resultStr = "";//转换完成的字符串
	var chineseNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
	var chineseUnit = ["十", "百", "千", "万", "十", "百", "千", "亿"];
	
	//清除千分位并转string
	num = clearComma(num).toString();
	
	//倒序并转中文
	for (var i = num.length - 1; i >= 0; i--) {
	   for (var j = 0; j < chineseNum.length; j++) {
	       if (num[i] == j) {
	           backOrder.push(chineseNum[j]);
	       }
	   }
	}
	
	//加入单位
	for (var i = 0; i < backOrder.length; i++) {
	   if (i == 0) {//处理个位数
	       if (backOrder[i] == "零") {
	           backOrder.splice(0, 1, "");
	       }
	   } else {//处理非个位数
	       for (var k = 0; k < chineseUnit.length; k++) {
	           if ((i % 8 == 0 ? 7 : (i % 8) - 1) == k) {
	               var obj = backOrder[i] + chineseUnit[k];
	               backOrder.splice(i, 1, obj)
	           }
	       }
	   }
	}
	
	//正序并整理语法
	var canPush = true;
	for (var i = backOrder.length - 1; i >= 0; i--) {
	   var str = backOrder[i];
	   if(isZero(str)){
	       str = canPush ? str[1] : "";
	       canPush = false;
	   }else{
	       canPush = true;
	   }
	   posOrder.push(str)
	}
	
	for (var i = 0; i < posOrder.length; i++) {
	   switch (posOrder[i]) {
	       case "千":
	           posOrder[i] = "零";
	           break;
	       case "百":
	           posOrder[i] = "零";
	           break;
	       case "十":
	           posOrder[i] = "零";
	           break;
	       case "一十":
	           posOrder[i] = "十";
	           break;
	   }
	   resultStr = resultStr + posOrder[i];
	}
	//如最后一位是零,去掉
	if(resultStr[resultStr.length-1] == "零"){
	   resultStr = resultStr.substr(0,(resultStr.length-1))
	}
	return resultStr;
}
输出结果

输出结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值