变换:给定一个字符串作为输入,将其中的数字用数字前近邻的字母序列进行替换,字母序列重复的次数等于该数字。最后将字符串输出。 例如: 输入:’a2bc3d1’ 输出:’aabcbcbcd’

 JS中,字符串的基本操作有:

1.search 查找

2.substring 获取子字符串

3.charAt 获取某个字符

4.split分割字符串,获得数组

JS中,数组的基础操作有:

1.push()方法可以在数组的末属添加一个或多个元素

2.pop()方法把数组中的最后一个元素删除

3.shift()方法把数组中的第一个元素删除

4.unshift()方法可以在数组的前端添加一个或多个元素

5.splice

(1)删除功能,第一个参数为第一项位置,第二个参数为要删除几个。array.splice(index,num),返回值为删除内容,array为结果值。

(2)插入功能,第一个参数(插入位置),第二个参数(0),第三个参数(插入的项)

array.splice(index,0,insertValue),返回值为空数组,array值为最终结果值

(3)替换功能,第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

array.splice(index,num,insertValue),返回值为删除内容,array为结果值。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 500px;
            height: 160px;
            border: 1px solid #000;
            margin: 100px auto;
        }
        ul>li{
            list-style: none;
            margin: 10px;
        }
        ul>li:nth-child(1)>button{
            width:60px ;
            margin-left: 10px;
        }
       ul>li:nth-child(2)>input{
           margin-left: 75px;
       }
        div{
            width: 300px;
            height: 300px;
            border: 1px solid #000;
            margin: 100px auto;
            /*这是个文本溢出div时的自动换行*/
            word-break:break-all;
        }
    </style>
    <script>
        //思路:将输入的字符串的相邻的数字和字母分别提取到两个数组中,然后进行输出。
        //字符串提取数字和字母,我用的是原生的方法,用正则会特别简单
        window.onload=function () {
            //获取第一个输入框
            var oTxt=document.getElementsByTagName("input")[0];
            //获取第二个输入框
            var oResult=document.getElementsByTagName("input")[1];
            //获取确定按钮
            var oDetermine=document.getElementsByTagName("button")[0];
            //点击确定事件
            oDetermine.onclick=function () {
                //获取输入的字符串
                var str=oTxt.value;
                //判断第一个字符是否为字母,若是数字则警告第一位必须是字母
                if(str.charAt(0)>="0"&&str.charAt(0)<"9")
                {
                    alert("输入的字符串的第一位必须为字母");
                }
                //判断最后一个字符是否为数字,若是字母则警告最后一位必须是数字
                if(!(str.charAt(str.length-1)>="0"&&str.charAt(str.length-1)<"9"))
                {
                    alert("输入的字符串的最后一位必须是数字")
                }
                //如果第一位是字母,且最后一位是数字,则条件满足,则可执行以下代码
                if(!(str.charAt(0)>="0"&&str.charAt(0)<"9")&&(str.charAt(str.length-1)>="0"&&str.charAt(str.length-1)<"9"))
                {
                  // 定义一个空字符串,用来记录数字
                    var tempNum="";
                    //定义一个空数组,用来存放数字
                    var arrayNum=[];
                    // 定义一个空字符串,用来记录字母
                    var tempStr="";
                    //定义一个空数组,用来存放字母
                    var arrayStr=[];
                    //定义一个空字符串,用来记录最后的结果
                    var strResult="";
                    //for循环遍历输入字符串长度
                    for(var i=0;i<str.length;i++)
                    {
                        //若字符是数字,则记录在tempNum这个字符串中
                        if(str.charAt(i)>="0"&&str.charAt(i)<"9")
                        {
                            tempNum+=str.charAt(i);
                            /*若tempStr这个字符串不空,那么就将这个字符串存进arrayStr这个数组中,然后tempStr="";
                            * 防止arrayStr重复添加tempStr这个字符串
                            * */
                            if(tempStr)
                            {
                                arrayStr.push(tempStr);
                                tempStr="";
                            }
                        }
                        //若字符是字母,则记录在tempStr这个字符串中
                        else
                        {
                            tempStr+=str.charAt(i);
                            /*若tempNum这个字符串不空,那么就将这个字符串存进arrayNum这个数组中,然后tempNum="";
                           * 防止arrayNum重复添加tempNum这个字符串
                           * */
                            if(tempNum)
                            {
                                arrayNum.push(tempNum);
                                tempNum="";
                            }
                        }
                    }
                   /* 由于字符串的最后一位必须是数字,那么上面的循环便不会执行else语句,即不会将tempNum
                   存放在arrayNum这个数组中,故最后要再添加一次
                   * */
                    if(tempNum)
                    {
                        arrayNum.push(tempNum);
                    }
                    // 遍历最后的arrayNum或arrayStr数组
                    for (var i=0;i<arrayNum.length;i++)
                    {
                        //将arrayStr[i]重复的次数为parseInt(arrayNum[i])
                        for (var j=0;j<parseInt(arrayNum[i]);j++)
                        {
                            strResult+=arrayStr[i];
                        }

                    }
                     //将结果写入textbox里
                     oResult.value=strResult;
                    //将结果写入div中
                    document.getElementsByTagName("div")[0].innerText=strResult;
                }


            }
        }
    </script>
</head>
<body>
<ul>
    <li><label>请输入字符串:</label><input type="text"><button>确定</button></li>
    <li><label>结果:</label><input type="text"></li>
</ul>
<div></div>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值