JS金额大小写转换

<script>
	function regInput(reg)
	{
		var srcElem = event.srcElement
		var oSel = document.selection.createRange()
		oSel = oSel.duplicate()
		 
		oSel.text = ""
		var srcRange = srcElem.createTextRange()
		oSel.setEndPoint("StartToStart", srcRange)
		var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length)
		event.returnvalue = reg.test(num)
	}
	
	function chineseNumber(num)
	{
		if (isNaN(num) || num > Math.pow(10, 12)) return ""
		var cn = "零壹贰叁肆伍陆柒捌玖"
		var unit = new Array("拾百千", "分角")
		var unit1= new Array("万亿", "")
		var numArray = num.toString().split(".")
		var start = new Array(numArray[0].length-1, 2)
		function toChinese(num, index)
		{
			var num = num.replace(/\d/g, function ($1)
			{
				return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1)
			})
			return num
		}
		for (var i=0; i<numArray.length; i++)
		{
			var tmp = ""
			for (var j=0; j*4<numArray[i].length; j++)
			{
				var strIndex = numArray[i].length-(j+1)*4
				var str = numArray[i].substring(strIndex, strIndex+4)
				var start = i ? 2 : str.length-1
				var tmp1 = toChinese(str, i)
				tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "")
				tmp1 = tmp1.replace(/^壹拾/, "拾")
				tmp = (tmp1+unit1[i].charAt(j-1)) + tmp
			}
			numArray[i] = tmp
		}
		numArray[1] = numArray[1] ? numArray[1] : ""
		numArray[0] = numArray[0] ? numArray[0]+"元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "")
		numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整"
		return numArray[0]+numArray[1]
	}
	function aNumber(num)
	{
		var numArray = new Array()
		var unit = "亿万元$"
		for (var i=0; i<unit.length; i++)
		{
			var re = eval_r("/"+ (numArray[i-1] ? unit.charAt(i-1) : "") +"(.*)"+unit.charAt(i)+"/")
			if (num.match(re))
			{
				numArray[i] = num.match(re)[1].replace(/^拾/, "壹拾")
				numArray[i] = numArray[i].replace(/[零壹贰叁肆伍陆柒捌玖]/g, function ($1)
				{
					return "零壹贰叁肆伍陆柒捌玖".indexOf($1)
				})
					numArray[i] = numArray[i].replace(/[分角拾百千]/g, function ($1)
				{
				return "*"+Math.pow(10, "分角 拾百千 ".indexOf($1)-2)+"+"
				}).replace(/^\*|\+$/g, "").replace(/整/, "0")
				numArray[i] = "(" + numArray[i] + ")*"+Math.ceil(Math.pow(10, (2-i)*4))
			}
			else numArray[i] = 0
		}
		return eval_r(numArray.join("+"))
	}
</script>

 

 

<input id=up size=60 οnkeypress="regInput(/^\d{0,12}(\.\d{0,2})?$/)"><button οnclick="lw.value = chineseNumber(up.value)">转为大写</button><br>
<input id=lw size=60 value="壹千壹百壹拾壹元整"><button οnclick="up.value = aNumber(lw.value)">转为小写</button>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值