<!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); else break; } 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>
详细解决方案
金额大小写变换(JS+正则)
热度:297 发布时间:2012-10-09 10:21:45.0
相关解决方案