1. 程式人生 > >變換:給定一個字串作為輸入,將其中的數字用數字前近鄰的字母序列進行替換,字母序列重複的次數等於該數字。最後將字串輸出。 例如: 輸入:’a2bc3d1’ 輸出:’aabcbcbcd’

變換:給定一個字串作為輸入,將其中的數字用數字前近鄰的字母序列進行替換,字母序列重複的次數等於該數字。最後將字串輸出。 例如: 輸入:’a2bc3d1’ 輸出:’aabcbcbcd’

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

1.search 查詢

2.substring 獲取子字串

3.charAt 獲取某個字元

4.split分割字串,獲得陣列

JS中,陣列的基礎操作有:

1.push()方法可以在陣列的末屬新增一個或多個元素

2.pop()方法把陣列中的最後一個元素刪除

3.shift()方法把陣列中的第一個元素刪除

4.unshift()方法可以在陣列的前端新增一個或多個元素

<!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>