创建用于替换字符串 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,以便我们可以将其作为字符串函数调用。
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP