注意
regexp表达式中“零”的验证有一点问题,如何有会的人可以告诉我,我就先谢谢了
1.代码如下
代码如下(示例):
<!DOCTYPE html>
<html>
<head>
<title>货币转化</title>
<script>
function fun(){
var str = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
var ste = new Array("角","分","厘");
var atr = new Array("拾","佰","仟","万","拾万","佰万","仟万","亿","拾忆","佰亿","仟亿","兆");
var array = new Array();
var array1 = new Array();
var str_1 = new Array();
var str_2 = new Array();
var str_3 = new Array();
var str_4 = new Array();
var re = /\./;//正则表达式:判断是否为浮点数
var txt = document.getElementById("txt").value;
var num = re.test(txt);
var num1 = parseInt(txt);//利用math对象将string类型转化为Number类型
var i;//限制输入整数部分的大小
for(i=0;Math.floor(num1)!=0;i++){//JavaScript与其他计算机语言计算不同,2/10:0.2 一定要注意用floor方法进行下舍入
array[i] = str[Math.floor(num1)%10];
num1/=10;
}
if(i>=14){
return window.alert("整数部分不能超过13位,即14位以下!");
}
for(i=array.length-1;i>0;i--){//进行连接
array[i] += atr[i-1];
}
if(!num){//若是整数,则加“元整”
array[0] += "元整";
}
if(num){
var ber1 = txt.split(re);//split方法按指定“字符”分割,并返回一个(字符串)数组
var ber2 = parseInt(ber1[1]);//取出结果
var i;
for(i=0;Math.floor(ber2)!=0;i++){
str_1[i] = str[Math.floor(ber2)%10];
ber2/=10;
}
str_2 = str_1.reverse();//将数组进行颠倒
if(i>=4){
return alert("只能读取到小数点后三位!");
}
for(var j=0;j<str_2.length;j++){
str_2[j] += ste[j];
}
array[0] += "元";//不是整数即在整数部分结尾处加“元”
}
array1 = array.reverse();//颠倒数组
str_3 = array1.concat(str_2);//将两个数组连接并返回一个数组
str_4 = str_3.join("");//将数组元素以“指定字符”进行连接,并返回一个字符串
var part = new RegExp("(([零][\u4e00-\u9fa5][亿万])+)|(([零][\u4e00-\u9fa5])+)","g");//正则表达式
var part1 = str_4.replace(part,"零");//将满足匹配的字符进行替换
window.alert("中文货币为:"+part1);//输出
}
</script>
</head>
<body>
数字货币:<input type="text" id="txt"/><input type="button" onclick="fun()" value="转换"/>
</body>
</html>
结果如下:
总结这就是所有的代码。我英语不太好,其中的变量名称如果理解不清的可以私信我
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)