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;
}

输出结果

输出结果

猜你喜欢

转载自blog.csdn.net/qweqwe2277/article/details/87935123
今日推荐