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

人行道

问题是我想在1st发生时替换某个字符串,直到发生为止nth哪里n可以是任何数字。

示例测试字符串:

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

我需要用替换第一个"one-two"直到第n个匹配项"one"

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

给定上面的函数,如果我通过3as nthOccurence,它应该将第一个匹配项替换为第三个匹配项。如果我通过2as 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);

显然我遇到了参考错误。它说left side assignment is not a reference且指向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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

如何替换字符串中的第n个匹配项

来自分类Dev

如何替换字符串中的第n个匹配项

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

使用Javascript / jQuery用字符串替换第n个制表符

来自分类Dev

Excel - 从相应的数据中获取第 2 个或第 n 个匹配的字符串

来自分类Dev

字符串C#中正则表达式的第n个匹配项的索引

来自分类Dev

sed:是否可以选择替换每行匹配的第 N 个和第 M 个匹配项?

来自分类Dev

用列表的第n个字符串替换第n个子字符串

来自分类Dev

如何用另一个替换字符串的第n个字符

来自分类Dev

PHP在字符串的第n个位置替换2个字符

来自分类Dev

替换字符串/文本中单词的“从第n个到最后一个”出现

来自分类Dev

替换字符串第3个字母的函数

来自分类Dev

如何从字符串SQL Server中选择第n个和第(n + 1)个单词

来自分类Dev

Excel VBA替换字符串中的第n个单词

来自分类Dev

使用python或bash查找并替换第n个文本字符串实例

来自分类Dev

用给定的字符串替换 vim 中的第 n 个模式

来自分类Dev

如何使用正则表达式匹配字符串中的第n个出现

来自分类Dev

匹配Perl中第n个可能的最长字符串

来自分类Dev

匹配包含十六进制数字的字符串中的第 n 个出现次数

来自分类Dev

提取第n个pattern1和第m个pattern2之间的字符串-sed / awk

来自分类Dev

字符向量从第n行到第n + x行的子字符串

来自分类Dev

替换第n个匹配的模式

来自分类Dev

用第2列中的字符串替换第1列中子字符串中的文本

来自分类Dev

在第n个'|'之后找到子字符串

来自分类Dev

如何分割字符串并删除第n个元素?

来自分类Dev

在第n个'|'之后找到子字符串

来自分类Dev

第n个最长的字符串排序

Related 相关文章

  1. 1

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

  2. 2

    如何替换字符串中的第n个匹配项

  3. 3

    如何替换字符串中的第n个匹配项

  4. 4

    正则表达式构建字符串,直到遇到第N个匹配项

  5. 5

    正则表达式构建字符串,直到遇到第N个匹配项

  6. 6

    使用Javascript / jQuery用字符串替换第n个制表符

  7. 7

    Excel - 从相应的数据中获取第 2 个或第 n 个匹配的字符串

  8. 8

    字符串C#中正则表达式的第n个匹配项的索引

  9. 9

    sed:是否可以选择替换每行匹配的第 N 个和第 M 个匹配项?

  10. 10

    用列表的第n个字符串替换第n个子字符串

  11. 11

    如何用另一个替换字符串的第n个字符

  12. 12

    PHP在字符串的第n个位置替换2个字符

  13. 13

    替换字符串/文本中单词的“从第n个到最后一个”出现

  14. 14

    替换字符串第3个字母的函数

  15. 15

    如何从字符串SQL Server中选择第n个和第(n + 1)个单词

  16. 16

    Excel VBA替换字符串中的第n个单词

  17. 17

    使用python或bash查找并替换第n个文本字符串实例

  18. 18

    用给定的字符串替换 vim 中的第 n 个模式

  19. 19

    如何使用正则表达式匹配字符串中的第n个出现

  20. 20

    匹配Perl中第n个可能的最长字符串

  21. 21

    匹配包含十六进制数字的字符串中的第 n 个出现次数

  22. 22

    提取第n个pattern1和第m个pattern2之间的字符串-sed / awk

  23. 23

    字符向量从第n行到第n + x行的子字符串

  24. 24

    替换第n个匹配的模式

  25. 25

    用第2列中的字符串替换第1列中子字符串中的文本

  26. 26

    在第n个'|'之后找到子字符串

  27. 27

    如何分割字符串并删除第n个元素?

  28. 28

    在第n个'|'之后找到子字符串

  29. 29

    第n个最长的字符串排序

热门标签

归档