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
廣告