建立用於替換字串 JavaScript 中第 n 個出現的 polyfill


假設我們建立了一個名為 removeStr() 的 polyfill 函式,它接收三個引數,即:

  • subStr → 要刪除的字串的出現次數

  • num → 它是一個數字 (num),表示要從字串中刪除的 subStr 的第 num 次出現

如果成功從字串中刪除 subStr,則該函式應返回新字串;否則,在所有情況下都應返回 -1。

例如:

const str = 'drsfgdrrtdr';
console.log(str.removeStr('dr', 3));

預期輸出:

'drsfgdrrt'

讓我們為此編寫程式碼:

示例

const str = 'drsfgdrrtdr';
const subStr = 'dr';
const num = 2;
removeStr = function(subStr, num){
   if(!this.includes(subStr)){
      return -1;
   }
   let start = 0, end = subStr.length;
   let occurences = 0;
   for(; ;end < this.length){
      if(this.substring(start, end) === subStr){
         occurences++;
      };
      if(occurences === num){
         return this.substring(0, start) + this.substring(end,
         this.length);
      };
      end++;
      start++;
   }
   return -1;
}
String.prototype.removeStr = removeStr;
console.log(str.removeStr(subStr, num));

輸出

此程式碼在控制檯中的輸出將是:

drsfgrtdr

理解程式碼:

  • removeStr() 函式首先檢查 subStr 是否沒有出現,如果確實沒有出現,則應退出並返回 -1。

  • 然後它使用滑動視窗演算法來記錄字串中 subStr 出現的次數(視窗大小等於 subStr 的長度)。

  • 最初,我們從最左邊的視窗開始,然後我們不斷滑動視窗,直到視窗的末尾到達原始字串的末尾。

  • 如果在我們滑動過程中,出現的次數等於所需的次數,我們就會從字串中修剪該出現次數,並返回由此獲得的新字串。

  • 如果我們遍歷整個字串,這意味著字串中沒有足夠的 subStr 出現次數,在這種情況下,我們應該返回 -1 並退出函式。

最後,我們將 removeStr 屬性新增到 String.prototype,以便我們可以將其作為字串函式呼叫。

更新於:2020年8月19日

429 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.