读书人

金额大小写变换(JS+正则)

发布时间: 2012-10-09 10:21:45 作者: rapoo

金额大小写转换(JS+正则)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript">function test(cash) {var num = cash;//将cash字符串以0开头的部分删除并赋值给num,传入的cash不能是以0开头的数字,否则会自动转换为八进制数for (var i=0; i < cash.length; i++){if (cash.substr(i,1) == 0)num = cash.substring(i+1);elsebreak;}var strOutput = "";var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分';num += "00";var intPos = num.indexOf('.');if (intPos >= 0)//消除num中的'.',如果没有则添加00到末尾num = num.substring(0, intPos) + num.substr(intPos + 1, 2);if(num.length > strUnit.length){return "输入的金额超过万亿,不能转换";}//strUnit字符串同num数字金额以右部对齐时一一对应strUnit = strUnit.substr(strUnit.length - num.length);//逐个转换数字为大写并赋予相对应的单位,即对应在strUnit中的单位,,需要注意的是replace第二个参数$1,为替代第一个小括号里的变量,这一点同Perl里面的=~ s /(replace code)/$1/差不多,具体查询Perl匹配模式的替代for (var i=0; i < num.length; i++)strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i,1),1) + strUnit.substr(i,1);return strOutput.replace(/零[仟佰拾角分]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿万元])/g, '$1').replace(/亿万/, '亿').replace(/([元角])零/, '$1整').replace(/^([元整零])/, "零元");};</script></head><body><input type="button" name="test1" value="Test"onclick="alert(test('999010256300.30'));"></input></body></html>

读书人网 >JavaScript

热点推荐