變換:給定一個字串作為輸入,將其中的數字用數字前近鄰的字母序列進行替換,字母序列重複的次數等於該數字。最後將字串輸出。 例如: 輸入:’a2bc3d1’ 輸出:’aabcbcbcd’
阿新 • • 發佈:2018-12-17
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>