题目:要求输入一个低于10位的数字,输出这串数字的人民币大写。
废话少说,上代码:
<script>
//定义单位数组
var unitArr = ['元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '亿'];
//定义汉字大写
var numArr = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
//将输入的字符串转换为整数
var n = parseInt(window.prompt('input'));
//将整数n转换为字符串,为何不直接m=window.promt('input'),是为了排除输入的数为小数
var m = String(n);
//预留空串,拼接结果
var result = '';
//取到输入数字的位数
var len = m.length;
//将单个数字转换为汉字大写
function toText(indext) {
return numArr[indext];
}
//主函数
function transform() {
//判断输入的是否是数字
if (isNaN(n)) {
console.log('请输入数字');
}
//如果是数字,是否超出10位数
else if (len > 9) {
console.log('您的余额没那么多,请不要白日做梦!');
}
//判断是否为0
else if (n == 0) {
console.log('对不起,您的余额为零,请及时存款!');
}
//如果输入的时候小于10位的非零数字,则进行一下循环
else {
for (var i = len - 1; i >= 0; i--) {
//将转换后的汉字与单位拼接
result += toText(m[len - 1 - i]) + unitArr[i];
}
//排除“壹拾元”与“壹拾萬元”的读法,正常人读“拾元”与“十萬元”
if ((len == 6 && m[0] == 1) || (len == 2 && m[0] == 1)) {
//剪切字符串,把前面的“壹”去掉,就是正常读法
result = result.slice(1);
}
//循环,将不正常的读法“零拾”“零佰”“零仟”“零萬”以及“零零”用正常的读法替换
while (result.search('零零') != -1 || result.search('零拾') != -1 || result.search('零佰') != -1 || result.search('零仟') != -1 || result.search('零萬') != -1) {
result = result.replace('零拾', '零');
result = result.replace('零佰', '零');
result = result.replace('零仟', '零');
result = result.replace('零萬', '萬');
result = result.replace('零零', '零');
}
//漏掉的两个非正常读法~·~
result = result.replace('亿萬', '亿');
result = result.replace('零元', '元');
console.log(result)
}
}
transform();
</script>
如有错误地方,敬请指出,谢谢!