怎么写阿各位js编程题

img


输入样例:
ABC xyz 123 ?!
结尾无空行
输出样例:
abc242526*
14 3 2
输出为两行,

先给出更改和吞掉字符之后的结果,在第一行输出,

再统计输入的字符总数n、被吞掉的数字字符个数d、被吞掉的其它字符个数t,在第二行输出,以空格间隔。

思路:
1、在未转换时,先计算原字符串字符的总数n,即str.length;再计算数字字符的个数、遍历字符串,符合Number(str[i]) >= 0 && Number(str[i]) <= 9,则数量+1,算出数字字符总数;
2、转换输入字符串,遍历字符串,判断如果是大写字母,则转换成小写字母,str[i].charCodeAt() >= 65 && str[i].charCodeAt() <= 90,符合这个条件则为大写字母,转成小写字母str[i].toLowerCase();
3、判断时候是否 ' ' ,如果是,则转成 * ;
4、判断是否是小写字母,遍历字符串,str[i].charCodeAt() >= 97 && str[i].charCodeAt() <= 122,符合这条件为小写字母,则将str[i].charCodeAt() - 96作为序列数;
5、不符合2/3/4,则直接吞掉,也就是 '' ;
6、最后用原来的字符串的长度 - 处理之后得到的字符串长度,计算出被吞掉的字符总数(当然也可以在遍历的时候不符合2/3/4条件的字符就用一个flag++,得到最后被吞掉的字符总数)


<!DOCTYPE html>
<html lang="zh-ch">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    let str = prompt("请输入你转换字符(1个-2000个):");
    while(str.length<1||str.length>2000){
        str = prompt("请正确输入你转换字符(1个-2000个):");
    }
    let new_str = "";
    let d = 0;
    let t =0;
    for(var i =0;i<str.length;i++){
        if(str[i].charCodeAt()>=65&&str[i].charCodeAt()<=90){
            new_str += str[i].toLowerCase();
        }else if(str[i].charCodeAt()==32){
            new_str += '*';
        }else if(str[i].charCodeAt()>=97&&str[i].charCodeAt()<=122){
            new_str += str[i].charCodeAt()-96
        }else{
            if(str[i].charCodeAt()>=48&&str[i].charCodeAt()<=57){
                d++;
            }else{
                t++;
            }
            continue;
        }
    }
    console.log(new_str);
    console.log(`字符总数${str.length} 被吞掉数字${d} 被吞掉其它字符${t}`);
</script>
</html>