因此,为了在字符串变化时找到每个匹配,并且仍然与任何浏览器兼容,请创建一个实现递归的函数。递归函数将通过调用自身并传递上一次迭代中更改的参数来迭代任务,直到给定条件不再适用。下面是递归函数每次匹配的结果字符串的示例。 | 递归函数|结果| | --------------|--------------| | 第一场比赛|Needle this part remains Needle| | 第二场比赛|this part remains Needle| | 第三场比赛|this part remains| | 退货|this part remains| 下面的示例是一个递归函数,它替换每个匹配项,然后在每次迭代时搜索新的已修改字符串。
/**
* Replace each match of a given substring within a given string as it
* changes.
* @param {string} string - The string to search on.
* @param {string/RegExp} target - The criteria to match.
* @param {string} replacement - The string to replace a match with.
* @default {string} If the replacement isn't passed, an empty character: ""
* will be passed.
* @returns {string} A string with all replacements.
*/
function substitute(string, target, replacement = "") {
let result = string.replace(target, replacement);
if (target.test(result)) {
return substitute(result, target, replacement);
}
return result;
}
const str = `NeeNeedledle this part will remain Needle`;
const rgx = /Needle/;
console.log(substitute(str, rgx));
1条答案
按热度按时间23c0lvtd1#
.replaceAll()
不能正常工作的原因是因为字符串是在它原来的未改变的值中搜索的。所以在第一个匹配之后,它会继续搜索,而不会替换任何匹配,直到它完成搜索。下面是每个匹配的结果字符串的例子。示例-要搜索的字符串
.replaceAll()
NeeNeedledle this part remains Needle
NeeNeedledle this part remains Needle
Needle this part remains
因此,为了在字符串变化时找到每个匹配,并且仍然与任何浏览器兼容,请创建一个实现递归的函数。递归函数将通过调用自身并传递上一次迭代中更改的参数来迭代任务,直到给定条件不再适用。下面是递归函数每次匹配的结果字符串的示例。
| 递归函数|结果|
| --------------|--------------|
| 第一场比赛|
Needle this part remains Needle
|| 第二场比赛|
this part remains Needle
|| 第三场比赛|
this part remains
|| 退货|
this part remains
|下面的示例是一个递归函数,它替换每个匹配项,然后在每次迭代时搜索新的已修改字符串。