JavaScript - 編寫字串函式以替換字元的第 k 次出現


假設我們需要編寫一個 String.prototype 函式,該函式接受三個引數。

  • 第一個引數是應搜尋子字串的字串
  • 第二個引數是字串,要移除其出現的字串
  • 第三個引數是一個數字,例如 n,要從字串中移除子字串的第 n 次出現。

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

示例

以下是程式碼 -

const str = 'jkdsttjkdsre';
const subStr = 'jk';
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++;
   }
}
String.prototype.removeStr = removeStr;
console.log(str.removeStr(subStr, num));

此函式首先檢查:如果 subStr 甚至沒有出現一次,那麼我們應該退出並返回 -1

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

最初,我們從最左邊的視窗開始,然後我們繼續滑動我們的視窗,直到視窗的末端到達原始字串的末端。如果在我們的過程中,出現的次數等於所需的次數,我們從字串中修剪該出現並返回由此獲得的新字串。

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

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

輸出

這將在控制檯中產生以下輸出 -

jkdsttdsre

更新於: 2020年9月18日

187 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告