JavaScript - 编写一个字符串函数来替换第 k 次出现的字符
javascriptweb developmentfront end technologyobject oriented programming更新于 2025/12/15 10:52:17
假设,我们需要编写一个接受三个参数的 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 causeences = 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
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

