gpt4 book ai didi

javascript - 替换字符串的第 1 到第 n 个匹配项。 javascript

转载 作者:行者123 更新时间:2023-11-29 21:59:35 25 4
gpt4 key购买 nike

问题是我想在 1st 出现时替换某个字符串,直到 nth 出现。其中 n 可以是任何数字。

示例测试字符串:

// 'one-two' the string I want to search
var str = "73ghone-twom2j2hone-two2717daone-two213";

我需要将第一个 "one-two" 替换为 "one"

//so in terms of function. i need something like:
function replaceByOccurence(testSring, regex, nthOccurence) {
//implementation here
}

鉴于上述功能,如果我将 3 作为 nthOccurence 传递,它应该替换第一个匹配项直到第三个匹配项。如果我将 2 作为 nthOccurence 传递,它应该替换第一个匹配项直到第二个匹配项,因此在我们的示例中,如果我们传递 2,它应该返回 "73ghonem2j2hone2717daone-two213"。请注意,第三个 "one-two" 没有被替换为 "one"

有人可以帮忙吗?我搜索了但在这里找不到类似的问题。


迷你更新 [已解决:检查上次更新]

所以我使用了@anubhava的第一个方案,并尝试将其作为函数放入String中。我是这样写的:

String.prototype.replaceByOccurence = function(regex, replacement, nthOccurence) {
for (var i = 0; i < nthOccurence; i++)
this = this.replace(regex, replacement);
return this;
};

//usage
"testtesttest".replaceByOccurence(/t/, '1', 2);

显然我遇到了引用错误。它表示左侧赋值不是引用,它指向this = this.replace(regex, replacement)


最后更新

我把代码改成了这样:

String.prototype.replaceByOccurence = function (regex, replacement, nthOccurence) {
if (nthOccurence > 0)
return this.replace(regex, replacement)
.replaceByOccurence(regex, replacement, --nthOccurence);

return this;
};

它现在正在运行。

最佳答案

我认为简单的循环就可以完成这项工作:

function replaceByOccurence(input, regex, replacement, nthOccurence) {
for (i=0; i<nthOccurence; i++)
input = input.replace(regex, replacement);
return input;
}

并将其命名为:

var replaced = replaceByOccurence(str, /one-two/, 'one', 3);

编辑: 另一个版本没有循环

function replaceByOccurence(input, regex, replacement, num) {
i=0;
return input.replace(regex, function($0) { return (i++<num)? replacement:$0; });
}

并将其命名为:

var replaced = replaceByOccurence(str, /one-two/g, 'one', 3);
//=> 73ghtwom2j2htwo2717datwo213

关于javascript - 替换字符串的第 1 到第 n 个匹配项。 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com